我正在尝试对两个列表同时执行一些操作。基本上,我有训练/测试集和它们的标签。如果我这样做:
x_train=[1,2,3,4]
x_test=[1,4,3,2]
y_train=[4,3,2,2]
y_test=[1,2,4,4]
for x,y in zip([x_train,x_test],[y_train,y_test]):
x.append(2)
y.append(3)我将更新每个列表并获取x_train=[1,2,3,4,2], y_train=[4,3,2,2,2]...
诸若此类。但是,如果在那之后我想把它们
for x,y in zip([x_train,x_test],[y_train,y_test]):
x.append(2)
y.append(3)
c=list(zip(x,y))
shuffle(c)
x,y=zip(*c)这仍然返回x_train=[1,2,3,4,2],y_train=[4,3,2,2,2] ...
当然,我可以在for循环之外对每个set进行混洗,但在我的实际情况中,我压缩了更多的列表,所以这个选项看起来不太好。
发布于 2020-10-20 19:24:56
为迭代器重新赋值--上例中的x、y --不会以任何方式影响迭代后的集合,因此集合--上例中的x_train、y_train等--保持不变。示例:
items = list(range(5))
for i in items:
i = i * 2
print(items) # [0, 1, 2, 3, 4]原例添加备注如下:
for x,y in zip([x_train,x_test],[y_train,y_test]):
x.append(2)
y.append(3)
c=list(zip(x,y))
shuffle(c)
x,y=zip(*c) # This has no effect on x_train, x_test, y_train, y_testhttps://stackoverflow.com/questions/64443807
复制相似问题