我不明白为什么我的3中的y被删除在以下代码中。我认为这是一些混淆问题,但有什么办法让y在x被删除时保留数字?
x = []
y = []
for i in range (10):
if i == 5:
y.append(x)
del x[3]
x.append(i)
print (x)
print (y)
输出:
x = [0, 1, 2, 4, 5, 6, 7, 8, 9]
y = [[0, 1, 2, 4, 5, 6, 7, 8, 9]]
答案 0 :(得分:1)
您必须将x
的副本附加到y:
y.append(x[:])
y.append(x)
会附加x
引用的列表,因此y
基本上是[x]
。由于x
包含y
,而不是任何其他列表,因此当您更改y
时,您将更改x
的值。
此外,如果x
是嵌套列表,您可能需要考虑采用x
的 deepcopy ,如下所示:
import copy
y.append(copy.deepcopy(x))
因此,每个嵌套列表都是副本,而不是x
中的相同列表。