问题描述
我试图同时对两个列表执行一些操作。基本上,我有他们的标签一起训练/测试集。如果我做类似的事情:
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循环之外随机播放,但是在我的实际情况下,我压缩了更多列表,因此此选项看起来不太好。
解决方法
将值重新分配给迭代器-上例中的x
,y
-不会以任何方式影响迭代的集合,因此,集合-x_train
,{{1} }等在上面的示例中-保持不变。
示例:
y_train
请参阅以下原始示例的附加注释:
items = list(range(5))
for i in items:
i = i * 2
print(items) # [0,1,2,3,4]