1、定义
列表(list)可以一次存储多个数据, 并且保存在同一个变量中 ,是一个容器类型
2、列表的遍历
1、for
for i in list1:
print(i)
2、while
i = 0
while i <= len(list1) - 1:
# 此时获取的i就是索引值
print(i, end=':')
# 此时可以依次根据元素下标取值
print(list1[i])
i += 1
3、列表的增操作
1、append()
在列表末尾增加数据
list1 = [1, 2, 3]
list1.append(4)
list1.append([6, 7, 8])
print(list1) # [1, 2, 3, 4, 5, [6, 7, 8]]
2、extend()
- 在列表的末尾扩展一个容器类型数据,也就是将容器类型的数据内部元素依次提取出来,追加到列表末尾
- 修改的也是原列表, 不会产生新的列表数据
- 在extend内部必须传入可迭代数据类型(容器类型), 否则报错
list2 = [1, 2, 3]
list2.extend([4, 5, 6])
print(list2) # [1, 2, 3, 4, 5, 6]
# list2.extend(3)
# TypeError: 'int' object is not iterable
# 在extend内部必须传入可迭代数据类型(容器类型), 否则报错
# 哪怕容器类型中只有一个元素,或者没有元素,都可以,但是非容器类型就不行.
list2.extend('3')
print(list2) # [1, 2, 3, 4, 5, 6, '3']
3、insert()
- 在列表的指定索引位置增加一个指定元素
list3 = [1, 2, 3]
list3.insert(1, 4) // 下标为1
print(list3) # [1, 4, 2, 3]
4、列表的查的操作
1、index()
- 查询指定元素出现的索引值
- 如果查询的元素不存在,将报错
- 如果列表中存在多个相同的元素,那我们只获取从左至右第一个该元素的索引值
list1 = ['python', 'java', 'c++', 'go', 'php', 'go']
print(list1.index('java')) # 1
# 如果查询的元素不存在,将报错
# ValueError: 'JavaScript' is not in list
print(list1.index('go')) # 3
2、count()
- 查询指定元素在列表中出现的次数
print(list1.count('python')) # 1
3、in not in
- 判断元素是否在容器中
- 元素 in 容器,not in判断是否不在容器内
list2 = [2, 3, 4, 5]
print(4 in list2) # True
print(4 not in list2) # False
5、列表删除操作
1、remove()
- remove是根据数据的值删除该元素的方法,不会产生新的列表,而是在原有列表上修改数据
- 使用remove删除列表元素时,列表中元素必须存在,否则报错
list1 = [1, 2, 3, 3, 2, 1, 4, 5, 6]
list1.remove(2) # remove 只能删除从左至右第一个出现的该元素. 无法全部删除
2、pop()
- pop 是根据数据的索引,删除指定位置元素的方法
- 删除不存在的索引位置的数据,会报错
list2 = [1, 2, 4, 3, 2]
pop_value = list2.pop(3)
3、clear()
- 清空列表, 此时列表数据为空
4、del()
- 不是 列表的专有操作方式, 所有的容器只要内部数据可以被删除,都可以使用del,但是前提是你必须找到该元素
- 如果要删除这个元素,必须要先可以获取到这个元素
- 如果我们要删除数据的索引不存在则会报错.
- 列表中删除元素会影响原数据的索引值
list5 = [1, 2, 3, 4, 5]
del list5[4] # [1, 2, 3, 4]
del list5[12] # IndexError: list assignment index out of range
del list5 # 这个删除方法比较暴力,所以我们尽量使用poNameError: name 'list5' is not defined
6、列表的排序以及逆转
1、reverse()
- 列表的反转
list1 = [1, 5, 6, 3, 4, 8, 2]
print(list1[::-1]) # [2, 8, 4, 3, 6, 5, 1]
print(list1.reverse()) # [2, 8, 4, 3, 6, 5, 1]
2、sort()
列表的排序
list2 = [1, 5, 6, 3, 4, 8, 2]
print(list2.sort())
list3.sort(reverse=True) # 逆排序
7、列表推导式
列表推导式,按照一定规则快速生成一个列表的方法.
- 变量 = [要插入列表中的数据 for 临时变量 in 容器] 按照循环规则进行列表生成
- 变量 = [要插入列表中的数据 for 临时变量 in 容器 if 条件] 循环后进行条件判断,然后生成列表
# 1、创建一个列表,内部是从0-9的数字
list2 = [i for i in range(10)]
# 2、创建一个列表,内部从0-9的偶数
list4 = [i for i in range(10) if i % 2 == 0]
# 3、创建一个列表,内容为['传智1.jpg', '传智2.jpg'.......'传智10.jpg']
list6 = [f'传智{i}.jpg' for i in range(1, 11)]
# 4、 创建一个列表,内部存放从0-100间既不是7的倍数,数字中又不含有7的数字
list8 = [i for i in range(101) if i % 7 != 0 if str(i).count('7') == 0]