关于python:在列表a中附加列表b-但是当b删除了a时也为空

List B append in list A - but when B removed A also empty

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

1
B[:] = []

然后它就会从任何地方消失。我怎样才能避免这个问题?使用拷贝?我的问题是,我正在一个列表中收集列表,在某个时刻,我将把这整件事添加到另一个列表中——之后,我想使添加的列表为空,以便使用它向其中添加新数据。


我认为最简单的方法是:

1
2
3
4
5
6
7
8
>>> a = []
>>> b = ['k']
>>> a.append(list(b))
>>> b[:] = []
>>> b
11: []
>>> a
12: [['k']]

您需要在另一个对象中复制List,然后应该操作:

1
2
3
4
a, b = range(10), []
c = a[:]
b.append(c)
a[:] = []


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