列表赋值的先后顺序问题

列表赋值的先后顺序问题
![](file:///C:\Users\Administrator\Documents\Tencent Files\442569872\Image\C2C\DJVN@GTG0$)Q)6M)[9UUBSH.png)
列表赋值的先后顺序问题
如图,为什么列表先给my_foods列表赋值,然后令friend_foods = my_foods, 然后给my_foods列表append一个新的元素,也能给friends_foods添加进去呢?初学python,请大神解答一下两者之间的差异呢?

讨论数量: 5

百度或者 Google 搜索 Python 可变对象 不可变对象

5年前 评论

可以使用深度拷贝:
import copy
list_new = copy.deepcopy(list)
这样就不会互相影响了

5年前 评论

列表是可变类型, friends_foods = my_foods,这样的写法是 friends_foods同样指向my_foods列表的内存空间(可以使用id方法进行查询两者是否为同一指向),所以my_foods在后面进行追加数据时,并没有改变两者的指向。

5年前 评论

在Python中,用一个变量给另一个变量赋值,引用的同一个内存地址
https://songlee24.github.io/2014/08/15/pyt...

4年前 评论
Jason990420

使用"="来复制一份列表是错误的, 因为这样一来, 两个列表会指到同一个内存, 改了其中一个, 两个都变了, 要使用副列表来作, 比如friend_foods = my_foods[:], 这样就OK了.

>>> a = [1, 2, 3, 4]
>>> b = a[:]
>>> a.append(5)
>>> print(a)
[1, 2, 3, 4, 5]
>>> print(b)
[1, 2, 3, 4]
4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!