0

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

1 回答 1

1

您必须将副本附加x到 y:

y.append(x[:])

y.append(x)附加由 引用的列表x,因此y本质上是[x]。因为它x包含在 中,而不是任何其他列表中,所以当您更改时y,您正在更改 的值。yx

此外,如果x是嵌套列表,您可能需要考虑像这样进行深拷贝:x

import copy
y.append(copy.deepcopy(x))

这样每个嵌套列表都是副本,而不是x.

于 2013-02-01T23:34:48.343 回答