Python零基础:从入门到精通(放弃)day05_容器类型_列表知识点及易错总结

注释:蓝色字体代表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

定义

由一系列变量组成的可变序列容器。

基础操作

猜你喜欢

转载自www.cnblogs.com/butubushichengxuyuan/p/11644375.html