python 中的六种“复制”方法

本文详细介绍了Python中列表的复制方法,包括直接赋值、切片、copy()、list()以及for循环和列表推导式。通过实例展示了不同复制方式下,对原列表的修改是否会影响副本。强调了深拷贝和浅拷贝的区别,对于理解Python中的引用和内存管理至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以列表为例:

方法一:直接变量赋值,将 li 赋值给变量 li1,打印他们的id会发现,他们的id是一样的,即是 li 和 li1 这两个变量在python中是同一个内存地址,对他们任何一个变量进行修改,另外一个会跟着变化

li = [1,2,3,4]
print(id(li))    # 打印结果为:1986306925192

li1 = li 
print(li1)       # 打印结果为:[1, 2, 3, 4]
print(id(li1)   # 打印结果为:1986306925192

# 对 li1 进行修改,li的值也会跟着变化
li1.append(5)
print(li1)      # 打印结果为:[1, 2, 3, 4, 5]
print(li)       # 打印结果为:[1, 2, 3, 4, 5]

方法二:使用切片,通过切片的方法对列表进行“复制”,分别打印他们的 id 会发现,他们的 id 是不同的,也就是它们在python中的内存地址是不一样的,对其中一个变量进行修改,另外的一个变量不会发生变化

li = [1,2,3,4]
print(id(li))    # 打印结果为:1962829111944

li2 = li[::]
print(li2)        # 打印结果为:[1, 2, 3, 4]
print(id(li2))     # 打印结果为:1962829112008

# 对 li2 进行修改,li的值不会变
li2.remove(2)
print(li2)      # 打印结果为:[1, 2, 3 ]
print(li)      # 打印结果为:[1, 2, 3, 4]

方法三:copy(),使用copy()方法进行“复制”操作,分别打印他们的 id 会发现,他们的 id 是不同的,也就是它们在python中的内存地址是不一样的,对其中一个变量进行修改,另外的一个变量不会发生变化

li = [1,2,3,4]
print(id(li))    # 打印结果为:2724465959560

li3 = li.copy()
print(li3)       # 打印结果为:[1, 2, 3, 4]
print(id(li3))    # 打印结果为:2724465959624

方法四:list(),使用list()方法进行“复制”操作,分别打印他们的 id 会发现,他们的 id 是不同的,也就是它们在python中的内存地址是不一样的,对其中一个变量进行修改,另外的一个变量不会发生变化

li = [1,2,3,4]
print(id(li))    # 打印结果为:1896434262664

li4 = list(li)
print(li4)      # 打印结果为:[1, 2, 3, 4]
print(id(li4))  # 打印结果为:1896439307592

方法五:for 循环,使用 for 循环的方法进行“复制”操作,分别打印他们的 id 会发现,他们的 id 是不同的,也就是它们在python中的内存地址是不一样的,对其中一个变量进行修改,另外的一个变量不会发生变化

li = [1,2,3,4]
print(id(li))    # 打印结果为:2244296860296

li5 = []
for i in li:
    li5.append(i)
print(li5)        # 打印结果为:[1, 2, 3, 4]
print(id(li5))    # 打印结果为:2244296860360

方法六:列表推导式,分别打印他们的 id 会发现,他们的 id 是不同的,也就是它们在python中的内存地址是不一样的,对其中一个变量进行修改,另外的一个变量不会发生变化

li = [1,2,3,4]
print(id(li))      # 打印结果为:1120506569352

li6 = [i for i in li]
print(li6)         # 打印结果为:[1, 2, 3, 4]
print(id(li6))     # 打印结果为:1120506569416
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值