注释:蓝色字体代表python内部语法关键字,灰色字体代表语句含义解释or代码范例,红色代表关键知识点。
列表 list
定义
由一系列变量组成的可变序列容器。
基础操作
1. 创建列表:
列表名 = []
列表名 = list(可迭代对象)
2. 添加元素:
列表名.append(元素) 追加
列表.insert(索引值,元素) 插入
3. 定位元素:
列表名[索引] = 元素
变量 = 列表名[索引]
变量 = 列表名[切片] # 赋值给变量的是切片所创建的新列表
列表名[切片] = 容器 # 右侧必须是可迭代对象,左侧切片没有创建新列表,只是定位了列表位置。
遍历列表(意思是将列表中元素依次赋值给创建的变量):
正向:
for 变量名 in 列表名:
#变量名就是元素
反向:
for 索引名 in range(len(列表名)-1,-1,-1):
#列表名[索引名]就是元素
4. 删除元素:
列表名.remove(元素) 删除原理:删除一个元素,覆盖上一个元素
例题:
""" 将列表[4,5,566,5,7,47]中所有小于10的元素删除 """ #正解 list_value = [4, 5, 566, 5, 7, 47] for i in range(len(list_value) - 1, -1, -1): if list_value[i] < 10: del list_value[i] print(list_value) #易错算法 list_value = [4, 5, 566,5, 7, 47] for i in list_value: if i < 10: list_value.remove(i) print(list_value)
注:
1.正解思路:由于正向删除列表内元素,后一个元素会覆盖上一元素的位置,导致遍历产生“跳跃”取值的现象,固此题采取逆向遍历的方式。
2.此题错误算法最后输出结果为:[566, 5, 7, 47],按照上述所说,正常应是[5,566, 7, 47],原因是列表创建的是变量,当内部的数据相同时,两个变量指向同一数据,此题中 list_value.remove(i),当i==5时,列表中两个变量指向它,系统删除默认删除第一个,所以出现本题现象
del 列表名[索引或切片]
深拷贝和浅拷贝
浅拷贝:复制过程中,只复制一层变量,不会复制深层变量绑定的对象的复制过程。
列:
List01 = [元素]
List02 = List01.copy() #浅拷贝
深拷贝:复制整个依懒的变量。
列:
Import copy # 创建一个深拷贝工具
List01 = [元素]
List02 = copy.deepcopy(list01) #深拷贝
范例内存示意图:
列表 list
定义
由一系列变量组成的可变序列容器。
基础操作