Zip inside zip 不跟踪更改
Zip inside zip does not track changes
我正在尝试同时对两个列表执行一些操作。基本上,我有 train/test 集和他们的标签。如果我这样做:
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)
这个还是returnsx_train=[1,2,3,4,2],y_train=[4,3,2,2,2] ...
我当然可以在每个集合的 for 循环之外洗牌,但在我的真实情况下,我压缩了更多列表,所以这个选项看起来不太好。
将值重新分配给迭代器 - 上面示例中的 x
、y
- 不会以任何方式影响迭代集合,因此集合 - x_train
、[=上例中的 15=] 等 - 保持不变。
示例:
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_test
我正在尝试同时对两个列表执行一些操作。基本上,我有 train/test 集和他们的标签。如果我这样做:
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)
这个还是returnsx_train=[1,2,3,4,2],y_train=[4,3,2,2,2] ...
我当然可以在每个集合的 for 循环之外洗牌,但在我的真实情况下,我压缩了更多列表,所以这个选项看起来不太好。
将值重新分配给迭代器 - 上面示例中的 x
、y
- 不会以任何方式影响迭代集合,因此集合 - x_train
、[=上例中的 15=] 等 - 保持不变。
示例:
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_test