列表 list

深拷贝和浅拷贝

  • 浅拷贝:复制过程中,只复制一层变量,不会复制深层变量绑定的对象的复制过程
  • 优点:占用内存较少
  • 缺点:深层数据被修改,互相影响.
  • 适用性:优先

列表内存图04.jpg

  • 深拷贝:复制整个依懒的变量
  • 优点:绝对互不影响
  • 缺点:占用内存较多
  • 适用性:当深层数据需要被修改时

列表内存图05.jpg

列表与字符串转换

列表转换为字符串

# result = "连接符".join(列表)

list01 = ["a", "b", "c"]
result = "-".join(list01)
print(result)

字符串转换为列表

# 列表 = “a-b-c-d”.split("分隔符")

# 使用一个字符串存储多个信息
list_result = "唐僧,孙悟空,八戒".split(",")
print(list_result)

列表推导式

使用简易方法,将可迭代对象转换为列表

  • 变量 = [表达式 for 变量 in 可迭代对象]
  • 变量 = [表达式 for 变量 in 可迭代对象 if 条件]
# 如果if真值表达式的布尔值为False,则可迭代对象生成的数据将被丢弃

list01 = [9, 15, 65, 6, 78, 89]
# 需求:在list01中挑出能被3整除的数字存入list02
# list02 = []
# for item in list01:
# if item % 3 == 0:
# list02.append(item)
list02 = [item for item in list01 if item % 3 == 0]
print(list02)
# 需求:在list01中所有数字的个位存储list03
# list03 = []
# for item in list01:
# list03.append(item % 10)
list03 = [item % 10 for item in list01]
print(list03)

列表推导式嵌套

  • 变量 = [表达式 for 变量1 in 可迭代对象1 for 变量2 in可迭代对象2]
#result = []
#for r in ["a", "b", "c"]:
# for c in ["A", "B", "C"]:
# result.append(r + c)
result = [r + c for r in list01 for c in list02]

列表操作函数

  • L.index(v [, begin[, end]]) : 返回对应元素的索引下标, begin 为开始索引,end 为结束索引, 当 value 不存在时触发 ValueError 错误
  • L.count(x) : 用于统计某个元素在列表中出现的次数
  • L.pop([index]) : 删除索引对应的元素,如果不加索引,默认删除最后元素,同时返回删除元素的 引用关系
  • L.insert(index, obj) : 将某个元素插放到列表中指定的位置
  • L.extend(lst) : 向列表追加另一个列表
  • L.remove(x) : 从列表中删除第一次出现在列表中的值
  • L.clear() : 清空列表,等同于 L[:] = []
  • L.sort(reverse=False) : 将列表中的元素进行排序,默认顺序按值的小到大的顺序排列
  • L.reverse() : 列表的反转,用来改变原列表的先后顺序
  • L.copy() : 复制此列表(只复制一层,不会复制深层对象)