在以下程序中使用pop函数时出错

时间:2015-06-16 13:41:51

标签: python-2.7

在以下程序中,所有等于b的列表都会弹出。

a = [2,4,3,2,4,7,8]
c = a
b = c
b.pop(2)
print a
print b
print c

根据我的说法,我们只应弹出b,但ac也会被弹出。为什么呢?

2 个答案:

答案 0 :(得分:1)

当您从ac分配列表时,您不会创建列表的副本,只是对现有值的引用。在您运行pop所有a时,bc只是同一列表的不同名称。您可以通过比较a is c来验证这一点。

请参阅this visualization

答案 1 :(得分:0)

如果您希望获得a到c和C到b的副本但不是参考:

   a = [2,4,3,2,4,7,8]

   # copy a to c
   c = a[:]
   b = c[:]
   b.pop(2)
   print a
   print b
   print c