(1). for循环和range函数 for循环除了创建方式以外,其余的都和while一样,包括 else,break,continue都可以在for循环中使用**
range() 可以生成一个自然数序列 r = range(5) # 生成一个这样的序列 r = range(0, 10, 2) 该函数需要三个参数: 1.起始位置 2.结束位置 3.步长(可以省略,默认为1)(步长不能为0,为0会抛异常,可以为负数,会倒序输出)
通过range()可以创建一个执行指定次数的for循环: 例如:
for i in range(5) print(i,end = ‘ ’)运行截图:
for i in range(10, 20, 2): print(i, end=' ')运行截图:
for i in range(18, 8, -3): print(i, end=' ')运行截图:
a = ['a', 'b', 2, 3] for i in range(len(a)): print(a[i], end=' ')运行截图:
**
(list) 列表是Python中的一个对象 对象(object):就是内存中专门用来存储数据的一块区域 列表中可以保存多个有序**的数据 列表的使用: 1.列表的创建 2.操作列表中的数据 创建列表 ,通过[]来创建列表
列表存储的数据,我们称为元素 一个列表中可以存储多个元素,也可以在创建列表时,来指定列表中的元素 列表可以为空,列表中添加多个元素时,多个元素之间用 , 隔开 列表可以保存任意类型的对象 my_list = [10,‘Hello’, True, None, [1, 2, 3], print ]
#列表中的对象都会按照插入的顺序存储到列表中 #第一个的对象保存到第一个位置,第二个保存到第二个位置 #我们可以通过索引(index)来获取表中的元素 #索引是元素在列表中的位置,列表中的每一个元素都有一个索引 #索引是从 0 开始的整数,列表第一个位置的索引为0,第二个位置索引为1 以此类推 语法 my_list[0] 如果是使用的索引超过了最大的范围,会抛出异常 len()函数 #获取列表的长度,列表中的元素的个数 #len()函数,通过该函数可以获取列表的长度 获取到的长度的值,是列表的最大的索引 + 1
代码举例:
a = [] b = [1, 2] print(type(a), a) print(type(b), b)运行截图:
a = [1, 'a', 'b', 'c'] x = len(a) print('长度', x) print(a[0], a[1], a[2])运行截图:
a = [1, 'a', 'b', 'c'] i = 0 while i < len(a): print('第', i + 1, '个值是:', a[i]) i += 1运行截图:
语法:列表[起始:结束:步长] 步长表示,每次获取元素的间隔,默认值为1 步长可以是负数,但不能为0 如果是负数,则从列表的后部向前面取元素
" + "可以将两个列表拼接为一个列表 " * "可以将列表重复指定的次数
a = [1, 2] b = [3, 4, 5] c = a + b print(c ) d = a * 3 print(d) x = a[1] + b[2] print(x)代码的拼接,重复打印,两个列表里的数值运算 运行截图:
#切片指从现有的列表中,获取一个子列表 #创建一个列表,一般创建列表时,变量的名字会使用复数(多个数据)
#列表的索引可以是负数 #如果索引是负数,则从后向前获取元素, -1 表示倒数第一个,-2表示倒数第二个,以此类推
#通过切片来获取指定的元素 #语法:列表[起始 : 结束 ] #通过切片获取元素时,会包括起始位置的元素,不包括结束位置的元素 #做切片时 , 总会返回一个新的列表,不会影响原来的列表 #起始位置和结束位置的索引都可以省略不写 如果省略结束位置,会截取到最后,开始同理 如果开始位置和结束位置全部省略,则相当于创建了一个列表的副本
a = ['a', 'b', 'c', 1, 2, 3, 4, 5, 6, 7] b = a[2:5] # 根据索引 print(b) c = a[2:8:2] print(c) d = a[2:] print(d) e = a[:3] # 不包含索引为3的数据 print(e)运行截图:
a = ['a', 'b', 'c', 1, 2, 3, 4, 5, 6, 7] b = a[-1] print(b) a = ['a', 'b', 'c', 1, 2, 3, 4, 5, 6, 7] for i in range(-1, -len(a) - 1, -1): print(a[i])运行截图:
a, *b = [1, 2, 3] print(a, b)加上*号,会将列表中第二个开始到结束的数据以列表的形式给b
*a, b = [1, 2, 3] print(a, b)运行截图:
通过方法修改列表
append()方法
stus = ['孙悟空', '猪八戒', '沙僧'] stus.append('唐僧') #在列表最后加上“唐僧” print(stus)运行截图;
a = [1, 2, 3, 4, 5] a.append(9) print(a)运行截图:
a = [1, 2, 3] b = a a.append(4) # a和b所指的地址一样,改变a,b也变 print(a) print(b)运行截图:
insert()方法
向列表的指定位置插入一个元素 #参数 #1.要插入的位置 #2.要插入的元素
stus = ['孙悟空', '猪八戒', '沙僧'] stus.insert(2, '唐僧') # 2 为下标索引位置 print(stus)运行截图:
extend()方法
#使用新的序列来扩展当前序列(extend改变了原来的列表,+ 号没有改变原来的列表) #需要一个序列作为参数,它会将该序列的元素添加到当前列表中
a = [1, 2, 3, 4, 5] b = [3, 4] a.extend(b) c = [5, 6] print(a)运行截图: pop()方法
pop()根据索引删除并返回被删除的元素的值 括号里为空默认删除最后一个
a = [1, 2, 3, 4, 5] b = a.pop() print(b) b = a.pop(2) print(a, b)运行截图:
remove()方法
#删除**指定值(不根据索引)**的元素 stus.remove(‘猪八戒’) 如果有重复元素,只会删除第一个,没有返回值
a = [1, 2, 3, 4, 5] a.remove(3) print(a)运行截图: del方法
根据索引来删除元素 c = [1, 2, 3, 4] for i in range(len©): del c[0] print( c ) 运行截图:
a = [1, 2, 3, 4, 5] del a[2] print(a)运行截图:
reverse()方法
#用来反转列表
a = [1, 2, 3, 4, 5] a.reverse() print(a)运行截图: sort()方法
对列表中的数据进行排序(默认从小到大排序)
a = [3, 2, 1, 5, 7, 3, 8] a.sort() print(a)运行截图: 逆序排序(利用reverse函数)
a = [3, 2, 1, 5, 7, 3, 8] a.sort(reverse=True) print(a)运行截图:
sorted()方法
a = [3, 2, 1, 5, 7, 3, 8] b = sorted(a) # 对a不改变,排序赋给b print(b)运行截图:
sort()方法和sorted()方法的区别 sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。 list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
count()函数 count() 方法用于统计字符串里某个字符出现的次数。 可选参数为在字符串搜索的开始与结束位置。 count()方法语法: str.count(sub, start= 0,end=len(string)) sub – 搜索的子字符串 start – 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。 end – 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。
a = [3, 2, 1, 5, 7, 3, 8] b = a.count(3) print("3的个数:", b)运行截图:
index()方法 Python index() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常。 语法: str.index(str, beg=0, end=len(string)) str – 指定检索的字符串 beg – 开始索引,默认为0。 end – 结束索引,默认为字符串的长度。
a = [3, 2, 1, 5, 7, 3, 8] x = a.index(2) # 返回第一次出现2的索引 print(x)运行截图: is 和 is not
is 和is not 比较的是对象的id是否相等
a = [1, 2, 3] b = [1, 2, 3] print(a == b) print(a is b) print(id(a)) print(id(b))列表里的元素相同,但是内存地址不一致,所以a和b所指的内存地址不一样 运行截图: copy()方法
copy()浅拷贝:只拷贝列表最外 deepcopy()深拷贝:由列表最内层向外拷贝,拷贝所有元素
import copy a = [1, 2, 3, [4, 5], 6] b = a c = copy.copy(a) d = copy.deepcopy(a) a.append(7) a[3].append(99) print(a, id(a)) print(b, id(b)) print(c, id(c)) print(d, id(d))运行结果: 原理图:
元组(tuple)
元组是一个不可变的序列 它的操作方式基本上和列表是一致的 所以在操作元组时,把元组当成不可变的列表就可以
一般当我们希望数据不改变时,就使用元组 创建元组 使用()来创建元组 my_tuple = (1, 2, 3, 4, 5) #创建了一个5个元素的元组 #元组是不可变对象, 不能尝试为了元组中的元素重新赋值 #my_tuple[3] = 10 NameError: name ‘my_tuple’ is not defined print(my_tuple[3])
#当元组不是空元组时,括号可以省略 #如果元组不是空元组,它里面至少要有一个逗号
a = (1,) b = (1) c = 1, 2 print(type(a)) print(type(b)) print(type(c))运行截图
a = (1, 2, 3, 4) b = (1, 2) i = 0 while i < len(a): print(a[i], end=' ') i += 1切片一样可以用
a = (1, 2, 3, 4) print(a[2::1]) # 运行结果:(3, 4)运行截图 元组不可修改,但是元组中的列表可以修改
a = (1, 2, 3, [4, 5]) a[3].append(9) print(a)运行截图:
a = ('a', 'b', 'c', 'e') for x in enumerate(a): # 加上索引值 print(x)运行截图:
