首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zip中的zip不会跟踪更改

Zip中的zip不会跟踪更改
EN

Stack Overflow用户
提问于 2020-10-20 19:01:10
回答 1查看 22关注 0票数 0

我正在尝试对两个列表同时执行一些操作。基本上,我有训练/测试集和它们的标签。如果我这样做:

代码语言:javascript
复制
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]...

诸若此类。但是,如果在那之后我想把它们

代码语言:javascript
复制
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进行混洗,但在我的实际情况中,我压缩了更多的列表,所以这个选项看起来不太好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-20 19:24:56

为迭代器重新赋值--上例中的xy --不会以任何方式影响迭代后的集合,因此集合--上例中的x_trainy_train等--保持不变。示例:

代码语言:javascript
复制
items = list(range(5))
for i in items:
     i = i * 2
print(items)  # [0, 1, 2, 3, 4]

原例添加备注如下:

代码语言:javascript
复制
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_test
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64443807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档