这里的目标是得到一个列表`[1,2,3,4],并按原样添加到另一个列表中;所以我可以列出一份清单
masterlist = [[1,2,3,4],[5,6,7,8],.....]
但我无法做到这一点。
我确实尝试了append,它有效,但是它复制了我追加的那个列表的引用,它没有复制值,所以如果我清空我添加的列表,我最终会清除整个事情
list1 = [1,2,3,4]
masterlist.append(list1)
del list1[:]
list1 = [5,6,7,8]
masterlist.append(list1)
这个结果在主列表中有2个列表,但它们基本相同,所以它看起来像这样:
[[5,6,7,8],[5,6,7,8]]
虽然我想要[[1,2,3,4],[5,6,7,8]]
我确实尝试使用extend,但这会添加当前列表的每个元素,作为另一个列表中的单个条目,所以我最终会使用
[1,2,3,4,5,6,7,8]
如何最终添加列表,列表的内容本身,而不是引用?
编辑:这不是与深拷贝或浅拷贝有关的问题;另一个相关问题似乎相似,但没有解决我的问题。我在这里看到一个完全适合我的解决方案
答案 0 :(得分:2)
你可以这样做:
>>> masterlist = [[1,2,3,4],[5,6,7,8]]
>>> list1 = [1,2,3,4]
>>> masterlist[len(masterlist):]=[list1[:]]
>>> del list1
>>> masterlist
[[1, 2, 3, 4], [5, 6, 7, 8], [1, 2, 3, 4]]
或者,
masterlist.append(list1[:])
或者,仅限Python3:
masterlist.append(list1.copy())