当前位置:首页>python>七 · Python中的容器类型(三)

七 · Python中的容器类型(三)

  • 2026-09-04 19:21:13
七 · Python中的容器类型(三)

7.推导式

推导式:就是一种能够快速生成数据的方式。

代码示例:想要快速生成由1~100内所有偶数数组成的列表

[xforx in range(1, 101) ifx % 2 == 0]
列表推导式:一种可以快速生成列表的方式。
a = [x for x in range(4)][0, 1, 2, 3]a = [x for x in range(3, 19, 2)][3, 5, 7, 9, 11, 13, 15, 17]
集合推导式:一种快速生成集合的方式。
a = {x for x inrange(1, 21) if x % 2 == 0}{2, 4, 6, 8, 10, 12, 14, 16, 18, 20}
字典推导式:一种快速生成字典的方式。
{x: x ** 2for x inrange(1, 11)}{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}

8.拆包

拆包:是一种快速提取数据的方式。

num1, num2, num3, num4 = (11, 22, 33, 44)
 列表拆包:
a, b = [12, 21]print(a)print(b)# 运行结果1221
元组拆包:
a, b = (12, 21)print(a)print(b)# 运行结果1221
集合拆包:
a, b = {12, 21}print(a)print(b)# 运行结果1221
字典拆包:
info = {"name": "张三", "age": 18}for k, v in info.items():    print(f'输出:{k},{v}')# 运行结果输出:name,张三输出:age,18

9.深拷贝和浅拷贝

深拷贝:拷贝一个对象时,只要发现对象有可变类型就会对该对象到最后一个可变类型的每一层对象就行拷贝,对每一层拷贝的对象都会开辟新的内存空间进行存储。深拷贝需要使用copy模块下的copy()函数  举例: b = copy.deepcopy(a)
import copylist1 = [["张三", "李四"], "王五", "赵六", "钱七"]list2 = copy.deepcopy(list1) # 进行深拷贝# 打印 list1 和 list2 两个列表的内存地址 => 结果不一样print(id(list1)) print(id(list2)) # 打印 list1 和 list2 两个列表中的子列表的内存地址 => 结果不一样print(id(list1[0])) print(id(list2[0])) list2[0][0] = "小明"# 结果 list2 列表修改了,但是不影响list1列表数据print(list2) # [['小明', '李四'], '王五', '赵六', '钱七']print(list1) # [['张三', '李四'], '王五', '赵六', '钱七']
 浅拷贝只对可变类型的第一层对象进行拷贝,对拷贝的对象开辟新的内存空间进行存储,且不会拷贝对象内部的子对象。浅拷贝需要使用copy模块下的copy()函数,举例: b = copy.copy(a)
list1 = [["张三", "李四"], "王五", "赵六", "钱七"]list2 = list1.copy() # 进行浅拷贝# 打印 list1 和 list2 两个列表的内存地址 => 结果不一样print(id(list1)) print(id(list2)) print('------------------------')# 打印 list1 和 list2 两个列表中的子列表的内存地址 => 结果一样print(id(list1[0])) print(id(list2[0])) list2[0][0] = "小明"# 结果list2列表修改了,list1列表数据也修改了print(list2) print(list1)
持续更新中!

最新文章

随机文章