两个名单中的数字都被删除?

时间:2013-02-01 23:32:48

标签: python list loops

我不明白为什么我的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]]

1 个答案:

答案 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中的相同列表。