【发布时间】:2018-07-18 02:07:38
【问题描述】:
如果我有将 1 个列表附加到另一个列表的代码:
nlis = [2, 4, 6, 8]
k = []
k.append(nlis)
print(k)
for i in range(4):
nlis[i] += 1
k.append(nlis)
print(k)
由于某种原因,此输出:
[[2, 4, 6, 8]]
[[3, 5, 7, 9], [3, 5, 7, 9]]
[2, 4, 6, 8] 变为 [3, 5, 7, 8]。
我怎样才能使它输出:
[2, 4, 6, 8]
[[2, 4, 6, 8], [3, 5, 7, 9]]
【问题讨论】:
-
您需要附加列表的副本,而不是列表本身:
k.append(nlis[:])。 -
我编辑了我的答案
-
它工作正常。您将同一个列表附加到另一个列表两次,并增加同一个列表中的每个值
-
我不想复制我的列表,因为在我的真实程序中,这会占用 100 个列表。
-
当您分配给
nlis(特别是它的元素)时,您正在重用它的内存。你要么避免这种情况,要么从那里复制。
标签: python python-3.x list append