Python 正在删除两个列表中的号码?

Python 正在删除两个列表中的号码?,python,list,loops,Python,List,Loops,我不明白为什么在下面的代码中删除y中的3。我假设这是一个别名问题,但是有没有什么方法可以让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,

我不明白为什么在下面的代码中删除y中的3。我假设这是一个别名问题,但是有没有什么方法可以让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]]

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

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

此外,如果<代码> x<代码>是嵌套列表,您可能需要考虑使用“<代码> x>代码>的深拷贝,如:

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

因此,每个嵌套列表都是副本,而不是
x

中的相同列表。您能告诉我们您期望的输出是什么吗?我不清楚你想要代码做什么。非常感谢!我很感激。“如果你改变x,你就改变y中的列表”听起来好像有两个列表——正如你稍后解释的那样,没有