Python 正在删除两个列表中的号码?
我不明白为什么在下面的代码中删除y中的3。我假设这是一个别名问题,但是有没有什么方法可以让y在x删除数字时保留它呢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,
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中的列表”听起来好像有两个列表——正如你稍后解释的那样,没有