假设我们有,
x1 = lst[0:20000]
x2 = lst[0:20000]
x3 = lst[0:20000]
x4 = lst[0:20000]
y1 = lst[0:20000]
y2 = lst[0:20000]
y3 = lst[0:20000]
y4 = lst[0:20000]
我想使用一个 for loop 来遍历所有变量 x1,...,x4。
for i in range(20000):
varX = x1.iloc[i]
varY = y1.iloc[i]
在这种情况下,我将如何将 x1 到 x2 到 x3 等以及 y1、y2、y3 等的数量更改为?我可能需要使用 while 循环来计数。就像是,
j = 1
while j < 5:
for i in range(20000):
varX = x1.iloc[I]
varY = y1.iloc[i]
j+=1
但我的问题是如何在循环中每次将 x x1.iloc[i] 旁边的 1 更改为 x2.iloc[i] ?确切地说,我如何将 j 放入 x(j).iloc[i] ?
回答1
最简单的方法:
for x, y in zip((x1, x2, x3, x4), (y1, y2, y3, y4)):
for i in range(20000):
varX = x.iloc[i]
varY = y.iloc[i]
最好在创建变量时将它们放在列表中,而不是在要一起使用时将它们临时收集在一起。
还有一些方法可以实现你的想法,例如使用 globals
来获取全局字典,或者使用 eval
来解析字符串。但这不推荐。您只需要知道,但永远不要在实践中使用它们(假装您不知道它们存在):
for i in range(1, 5):
x = globals()[f'x{i}'] # or eval(f'x{i}')
y = globals()[f'y{i}']
for j in range(20000):
varX = x.iloc[j]
varY = y.iloc[j]