python容器类型:列表
列表介绍
-
概述: 属于容器的一种,属于可变类型.
- 格式:
list1 = [值1, 值2, 值3...]
list2 = []
list3 = list()
-
索引
- 与字符串一样,列表中的元素也有自己的编号(下标,脚标,索引,index),且默认从0开始(正向索引),-1(逆向索引).
# 需求1: 演示定义列表.
# 1. 定义列表.
# 列表可以同时存储多个不同类型的值, 建议同时存储多个同类型的值,因为捏: 好管理.
list1 = [10, 20, 10.3, True, False, 'abc']
list2 = [] # 如果定义空列表, 推荐使用这种写法.
list3 = list()
# 2. 查看列表内容.
print(list1)
print(list2)
print(list3)
# 3. 查看变量的类型
print(type(list1)) # <class 'list'>
print(type(list2)) # <class 'list'>
print(type(list3)) # <class 'list'>
print("-" * 30)
# 需求2: 演示列表的索引操作.
list4 = [1, 2, 3, 4, 5]
# 根据索引获取元素.
print(list4[0])
print(list4[1])
# 列表属于可变类型, 所以其值是可以改变的.
list4[2] = 300
print(list4) # [1, 2, 300, 4, 5]
-
列表遍历
- 概述: python 中把逐个获取容器类型中的元素过程称为遍历.
-
思路:
-
方式1:直接获取列表的每个元素.
-
方式2:通过索引的方式获取列表的元素.
-
# 1.定义列表
list1 = ['a','b','c']
# 2.遍历列表
# 方式1:直接获取列表中每个元素
for i in list1:
print(i)
# 方式2: 通过索引的方式获取列表的元素.
#for循环写法
for i in range(len(list1)):
print(list1[i])
#while循环写法
i = 0
while i < len(list1):
print(list1[i])
i += 1
# 扩展: 列表的嵌套.
list2 = [[10, 20, 30], [40, 50], [60, 70, 80, 90]]
# 如何获取 50?
print(list2[1][1])
# 如何修改 60 => 666
list2[2][0] = 666
print('-' * 30)
# 如何遍历上述的列表嵌套形式.
# 思路1: 直接获取元素值.
for inner_list in list2:
# 因为 inner_list 还是1个列表, 所以我们接着遍历.
# print(inner_list)
for value in inner_list:
print(value, end='\t')
print() # 打印完1个列表后, 记得加换行.
print('-' * 30)
# 思路2: 根据索引获取元素值.
for i in range(len(list2)):
# print(i) # 0, 1, 2 分别代表list2列表的 3个子列表的索引.
# print(list2[i]) # list2[i] 就是列表list2的每个 子列表, 我们接着遍历.
for j in range(len(list2[i])):
# 具体的获取元素值的过程, 并打印.
print(list2[i][j], end='\t')
print()
列表:增,删,改,查.
-
增
-
列表名.append(任意变量即可) 往列表的末尾追加元素
-
列表名.extend(必须为容器类型) 把容器类型中的每个变量都添加到列表中
-
列表名.insert(索引,元素) 往列表的指定位置插入元素
-
-
注意
-
- append() 和 extend() 的区别:
- 区别1:参数不同.
append():可以传入 任意变量.
extend():必须传入 容器类型.
- 区别2: 作用不同.
append():把元素追加到末尾,默认是当时做一个整体来添加.
extend():把容器类型的每个元素,逐个添加进来,底层有遍历的动作.
-
- insert()函数往指定位置插入数据,如果索引不合法,默认添加最前面或最后面.
# 需求1: 演示列表相关操作 增.
# 1. 定义列表.
list1 = ['a', 'b', 'c']
# 2. 演示 增 相关的函数.
# 列表名.append(任意变量即可) 往列表的末尾追加元素.
# list1.append('d')
# list1.append('e')
# list1.append('xyz') # 是把 'xyz'当做整体来添加的.
# list1.append([10, 20, 30]) # 是把 列表 当做整体来添加的.
# 列表名.extend(必须是容器变量) 把容器类型中的每个变量都添加到 列表中.
# list1.extend(10) # 报错.
# list1.extend('xyz') # 字符串 = 容器类型.
# list1.extend([10, 20, 30]) # 字符串 = 容器类型.
# 列表名.insert(索引, 元素) 往列表的指定位置插入元素.
# list1.insert(1, 'd') # 往 索引1的(前边)位置插入元素 d
list1.insert(-2, 'd') # 往 索引-2的(前边)位置插入元素 d
# 3. 打印结果.
print(f'list1: {list1}')
- 删
# 需求2: 演示列表相关操作 删.
# 1. 定义列表, 记录元素.
list1 = ['a', 'b', 'c', 'd', 'b', 'd']
print(f'删除前: {list1}')
# 2. 测试上述的方法.
# 列表名.pop(索引) 删除指定索引位置的元素, 并返回被删除的元素.
# print(list1.pop(2)) # c
# print(list1.pop(5)) # 正常是可以的, 但是这里是报错, 因为上边删了一个元素, 就没有索引5了
# print(list1.pop(10)) # IndexError, 索引越界错误.
# 列表名.remove(元素) 删除指定元素, 删除第一个找到的元素.
# list1.remove(0) # ValueError, revmoe是根据元素值删除的.
# print(list1.remove('b')) # 删除第1个匹配到的'b', 无任何返回, 如果打印, 结果是: None
# list1.remove('b') # 正确
# del 列表名[索引] 删除指定索引位置的元素.
del(list1[2])
del list1[2] # 写法同上.
# del 列表名 从内存中删除整个列表, 相当于该列表从未定义.
# del list1
# del(list1) # 写法同上.
# 列表名.clear() 清空列表, 得到1个 空列表, 类似于: list1 = []
# list1.clear()
# 3. 打印结果.
print(f'删除后: {list1}')
- 查
# 需求3: 演示列表相关操作 查.
# 1. 定义列表.
list1 = ['a', 'b', 'c', 'd', 'b', 'd']
# 2. 演示列表的 查找 相关的函数.
# 列表名.index(元素, 起始索引, 结束索引) 去列表中查找指定的元素(第一次出现的位置), 找到就返回, 找不到就: 报错.
print(list1.index('b')) # 1
print(list1.index('b', 2)) # 4, 从索引2开始查找, 元素b 在列表中的索引
# print(list1.index('b', 2, 4)) # 在索引区间 2 ~ 4之间查找 元素b, 包左不包右, 找不到就 报错.
print('-' * 30)
# 列表名.count(元素) 计数.
print(list1.count('b')) # 2次
# 变量名或者元素值 in 列表名 是否在.
print('d' in list1) # True
print(10 in list1) # False
# 变量名或者元素值 not in 列表名 是否不在.
print('d' not in list1) # False
print(10 not in list1) # True
- 改
# 需求4: 演示列表相关操作 改.
# 1. 定义列表, 记录元素.
list1 = ['a', 'b', 'c', 'd', 'b', 'd']
print(f'修改前: {list1}')
# 2. 演示列表的 改 相关操作.
# 列表名[索引] = 值
# list1[1] = 100
# 列表名.reverse() 反转列表元素内容.
# list1.reverse() # 扩展, 你可以通过 for循环 或者 while循环的方式, 自定义代码对列表内容进行反转.
# 列表名.sort(key=None, reverse=False) 列表元素排序, key可以指定排序规则, reverse表示升序还是降序, 默认是False(升序)
# list1.sort()
# list1.sort(reverse=False) # 效果同上, False = 不反转, 即: 升序.
# list1.sort(reverse=True) # True = 反转, 即: 降序.
# 3. 打印结果.
print(f'修改后: {list1}')
总结
持续更新中~~~