以列表为例:
方法一:直接变量赋值,将 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