邮编内的拉链不跟踪更改

问题描述

我试图同时对两个列表执行一些操作。基本上,我有他们的标签一起训练/测试集。如果我做类似的事情:

x_train=[1,2,3,4]
x_test=[1,4,2]
y_train=[4,2]
y_test=[1,4]

for x,y in zip([x_train,x_test],[y_train,y_test]):
     x.append(2)
     y.append(3)

我将更新每个列表并获取 x_train=[1,2],y_train=[4,2]...

,依此类推。但是,如果在那之后我尝试将它们洗牌

for x,y_test]):
   x.append(2)
   y.append(3)
   c=list(zip(x,y))
   shuffle(c)
   x,y=zip(*c)

这仍然返回x_train=[1,2] ...

我当然可以在每个循环的for循环之外随机播放,但是在我的实际情况下,我压缩了更多列表,因此此选项看起来不太好。

解决方法

将值重新分配给迭代器-上例中的xy-不会以任何方式影响迭代的集合,因此,集合-x_train,{{1} }等在上面的示例中-保持不变。 示例:

y_train

请参阅以下原始示例的附加注释:

items = list(range(5))
for i in items:
     i = i * 2
print(items)  # [0,1,2,3,4]