列表B附加在列表A中 - 但是当B删除A也是空的

时间:2014-11-07 12:33:10

标签: python list python-2.7 pointers reference

我现在才意识到,当我将列表附加到另一个列表并删除此附加列表时,该列表也不会出现在另一个列表中。 可能有道理,因为将列表附加到其他地方只是一个参考。所以,当我使用这样的东西时:

B[:] = []

然后它将从各处消失。我该如何避免这个问题?使用复制?我的问题是我在列表中收集列表,并且在某些时候我将这整个内容添加到另一个列表中 - 之后我想将添加的列表清空以使用它来添加新数据到它

3 个答案:

答案 0 :(得分:1)

>>> a = [1, 2, 3, 4]
>>> b = list()
>>> b.append(a[:])
>>> a = []
>>> b
[[1, 2, 3, 4]]

答案 1 :(得分:1)

您需要将List复制到另一个对象中,然后才能运行: -

a, b = range(10), []
c = a[:]
b.append(c)
a[:] = []

答案 2 :(得分:1)

我认为简单的方式是:

>>> a = []
>>> b = ['k']
>>> a.append(list(b))
>>> b[:] = []
>>> b
11: []
>>> a
12: [['k']]