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']] |
您需要在另一个对象中复制
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]] |