列表的通用操作
-
加号
- 这里提到的+是列表之间的操作,不能将列表和其他类型的数据结构或类型来进行操作;加号本质上是一种拼接,减号和除号不能用于列表之间的操作。
- 语法:[ ] + [ ]
list_1 = [1, 2, 3] + [4, 5, 6] 结果:list_1 = [1, 2, 3, 4, 5, 6] list_1 = [78, 99, 3] lst = [1, 2, 3] + list_1[2] 结果:lst = [1, 2, 3] + list_1[2] TypeError: can only concatenate list (not "int") to list lst = [1, 2, 3] + '5' 结果:lst = [1, 2, 3] + '5' TypeError: can only concatenate list (not "str") to list
-
乘号
- 这里提到的*是列表与整型数字之间的操作,不能用于其他任何状况的操作;称号本质上是指定列表中的元素按照顺序重复指定的次数,整型数字就是指定的次数。
- 语法: [ ] * int(number)
list_1 = [1, 2, 3] * 2 结果:list_1 = [1, 2, 3, 1, 2, 3] list_1 = [1, 2, 3] * [4, 5, 6] 结果:TypeError: can't multiply sequence by non-int of type 'list'
-
in 和 not in
- in用来检测元素是否存在于列表中,是返回True,否返回False;not in用来检测元素是否不存在于列表中,是返回True,否返回False
- 语法:元素 in 列表 ; 元素 not in 列表
list_1 = ['', None, False, 0.0, 0] s = None in list_1 n = '' not in list_1 print(s) 结果:True print(n) 结果:False
-
len()
- len() 函数可以用来返回列表中元素的个数
- len() 函数返回的是一个int类型的数据
- 语法:len(list)
list_1 = ['', None, False, 0.0, 0, []] print(type(len(list_1)), len(list_1)) 结果:<class 'int'> 6
-
max() 和 min()
- max()函数用来获取列表中元素的最大值;min()函数用来获取列表中元素的最小值
- 注意:这两个函数本质上是进行一种比较关系,虽然在列表中有一套独特的比较方式,但是不同类型之间不能比较的还是不能比较的
- 语法:max(list) min(list)
list_1 = ['文子', '杨朱', '墨子', '老子', '孔子'] print(max(list_1), min(list_1)) 结果:老子 墨子 list_2 = ['', None, False, 0.0, 0, []] print(max(list_2), min(list_2)) 结果:print(max(list_2), min(list_2)) TypeError: '>' not supported between instances of 'NoneType' and 'str'
-
index()
- index() 获取指定元素在序列中的位置,第一个参数——查找对象 第二个参数——起始位置 第三个参数——终止位置
- 这个方法只找该指定元素在指定切片内的第一个位置,是顺序查找,找到一个就停止;list_1.index(‘杨朱’, 2, 8) 起始位置和终止位置之间是英文逗号不能是英文冒号
- 语法:list.index(指定元素, 起始位置, 终止位置)
list_1 = ['文子', '杨朱', '墨子', '老子', '杨朱', '孔子'] print(list_1.index('杨朱')) 结果:1 print(list_1.index('杨朱', 2, 8)) 结果:4
-
count()
- count() 获取指定元素在序列中出现的次数
- count()方法不能指定区间
- 语法:list.count(指定元素)
list_1 = ['文子', '杨朱', '墨子', '老子', '杨朱', '孔子'] print(list_1.count('杨朱')) 结果:2
- 浅谈函数和方法的区别:
- 函数的形式xxx(对象)
- 方法的形式对象.xxx(指定内容)
修改列表
-
索引修改法
- 通过下标索引值来修改元素
- 下标索引值不能超出范围,不能删除,只能修改
- 语法:list[2] = ‘修改内容’
list_1 = ['', None, False, 0.0, 0] list_1[0] = '文子' print(list_1) 结果:['文子', None, False, 0.0, 0] list_1[3] = [] print(list_1) 结果:['文子', None, False, [], 0]
-
del关键字
- del关键字还是需要通过索引值来删除元素
- del 删除之后被删除的元素后面的元素自动向前顺移一位
- 语法:del list[2]
list_1 = ['文子', None, False, 0.0, 0] del list_1[3] print(list_1) 结果:['文子', None, False, 0]
-
切片+步长
- 切片+步长本质上还是通过索引值来修改列表
- 切片的步长为1时不需要考虑切片中元素的个数和修改内容中元素的个数的关系,被修改的部分会直接被修改成修改内容;切片的步长不为一时,切片中元素的个数一定要和修改内容中元素的个数相等;步长不能为0
- 语法:list[2:5:2] = ‘修改内容’, ‘修改内容’
list_1 = ['文子', None, False, 0.0, 0] list_1[1:5] = '杨朱', '墨子', '老子', '杨朱', '孔子' print(list_1) 结果:['文子', '杨朱', '墨子', '老子', '杨朱', '孔子'] list_1[1:5:2] = '杨朱', '墨子', '老子', '杨朱', '孔子' print(list_1) 结果:list_1[1:5:2] = '杨朱', '墨子', '老子', '杨朱', '孔子' ValueError: attempt to assign sequence of size 5 to extended slice of size 2 list_1[1:5:2] = '公孙龙子', '尉缭子' print(list_1) 结果:['文子', '公孙龙子', '墨子', '尉缭子', '杨朱', '孔子']
列表的方法
-
append()
- append()方法可以在列表的末尾添加一个元素,典型的例子就是贪吃蛇
- append()方法只接受一个参数,不能没有参数,也不能多余一个参数
- 语法:list.append(元素)
list_1 = ['文子', '公孙龙子', '墨子'] list_1.append('荀子') print(list_1) 结果:['文子', '公孙龙子', '墨子', '荀子'] list_1.append() print(list_1) 结果:list_1.append() TypeError: append() takes exactly one argument (0 given)
-
insert()
- insert()方法可以向指定的位置插入一个元素
- insert()方法只接受两个参数,不接受两个以下或以上的元素
- 语法:list.insert(位置, 元素)
list_1 = ['文子', '公孙龙子', '墨子'] list_1.insert(1, 'I love what I said.') print(list_1) 结果:['文子', 'I love what I said.', '公孙龙子', '墨子'] list_1.insert('I love what I said.') print(list_1) 结果:list_1.insert('I love what I said.') TypeError: insert() takes exactly 2 arguments (1 given)
-
extend()
- extend()可以扩展一个序列,但是它是以一个序列为参数的
- extend()方法接受且只接受一个参数
- 语法:list.extend(list)
list_1 = ['remove', 'sad', 'crazy'] list_2 = [(1, 2, 3), None, True] list_1.extend(list_2) print(list_1) 结果:['remove', 'sad', 'crazy', (1, 2, 3), None, True] extend(self, iterable)
-
clear()
- clear()可以用来清空序列
- clear()方法不接受参数
- 语法:list.clear()
list_2 = [(1, 2, 3), None, True] list_2.clear() print(list_2) 结果:[] clear(self)
-
pop()
- pop()可以删除指定位置的元素,有返回值
- 不传递索引值,默认删除最后一个元素
- 语法:list.pop(索引值)
list_2 = [(1, 2, 3), None, True, 0.0] a = list_2.pop(2) print(list_2, a) 结果:[(1, 2, 3), None, 0.0] True a = list_2.pop() print(list_2, a) 结果:[(1, 2, 3), None] 0.0 pop(self, index=None)
-
remove()
- remove()方法可以通过指定值的方式来删除元素,无返回值
- 指定值不能为空缺
- 语法:list.remove(指定值)
list_2 = [(1, 2, 3), None, True, 0.0] list_2.remove(True) print(list_2) 结果:[(1, 2, 3), None, 0.0] remove(self, value)
- reverse()
- reverse()方法可以用来反转列表
- reverse()方法没有不接受参数
- 语法:list.reverse()
list_2 = [(1, 2, 3), None, True, 0.0] list_2.reverse() print(list_2) 结果:[0.0, True, None, (1, 2, 3)] reverse(self)
-
sort()
- sort()方法用来帮助列表排序,默认是升序
- 默认的参数是reverse=False;可以通过给予reverse=True的参数来实现降序排列
- 语法:list.sort()
list_2 = [(1, 2, 3), None, True, 0.0] list_2.sort() print(list_2) 结果:list_2.sort() TypeError: '<' not supported between instances of 'NoneType' and 'tuple' list_3 = ['文子', '公孙龙子', '墨子', '尉缭子', '杨朱', '孔子'] list_3.sort() print(list_3) 结果:['公孙龙子', '墨子', '孔子', '尉缭子', '文子', '杨朱'] list_3.sort(reverse=True) print(list_3) 结果:['杨朱', '文子', '尉缭子', '孔子', '墨子', '公孙龙子'] sort(self, key=None, reverse=False)
遍历列表
-
while循环遍历列表的机制
- 通过while循环将列表中的元素一个个输出
list_2 = [(1, 2, 3), None, True, 0.0] i = 0 while i < len(list_2): print(list_2[i]) i += 1 结果:(1, 2, 3) None True 0.0
-
for循环遍历列表的机制
- for循环中的序列中有多少个元素就会循环多少次,每循环一次就会将一个元素赋予变量,所以我们可以通过变量来遍历列表中的元素
- for循环语法:
for 变量 in 序列(遍历的规则): 代码块 a = [(1, 2, 3), None, True, 0.0] for j in a: print(j) 结果:(1, 2, 3) None True 0.0
-
range()函数的特点以及其与for循环的配合使用
- 语法:range(start, stop, step)
- start 开始 默认是从0开始 例如 range(5)等价于range(0, 5)
- stop 结束 不包括结束 例如 range(0, 5)结果是[0, 1, 2, 3, 4]
- step 步长 默认为1 例如 range(5)等价于range(0, 5)等价于range(0, 5, 1)
- 步长只能为正整数和负整数
list(range(0, 10)) 结果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] for i in range(0, 9, 2): print(i) 结果:0 2 4 6 8