我有8个列表,其中包含一堆名为erik1,erik2,...,erik8的数据。我的代码是:
while (y<9):#go through all the arrays
y=y+1
array="erik"+str(y)
print (array)
for z in array:
在for循环中,我希望数组对应于在它上面的while循环中生成的字符串。现在它认为数组是一个字符串而不是我想要的列表对象。我怎样才能做到这一点?
答案 0 :(得分:2)
变量名称是代码,而不是数据。改为使用列表列表。
eriks = [erik1, erik2, erik3, erik4, erik5, erik6, erik7, erik8]
for erik in eriks:
for z in erik:
....
退一步,无论创建,8个类似命名的列表应该首先创建一个列表列表(或列表字典)。
答案 1 :(得分:0)
所以erik1, erik2 ...
是你在while循环中创建的字符串引用的列表吗?
在这种情况下,只需使用eval("erik"+str(y))
来获取该字符串引用的列表
[z <<DO WHATEVER YOU WANT WITH z HERE>> for z in [array for array in [eval("erik"+str(y)) for y in range(9)]]]
或
for array in [eval("erik"+str(y)) for y in range(9)]:
for z in array:
# DO WHATEVER YOU WANT WITH z
答案 2 :(得分:0)
array = ["erik{}".format(i) for i in range(1,9)]
print array
答案 3 :(得分:0)
@Chepner的回答是正确的方法;你真的应该让erik*
列出一个列表清单。它就这样灵活得多。
但是,如果您出于某种原因无法做到这一点(例如,如果您这样做会遗留旧代码),那么答案就是使用globals()
和locals()
。这两个函数返回字典,允许您按名称查询对象(变量,函数等)。
http://www.diveintopython.net/html_processing/locals_and_globals.html
假设您的erik*
列表是局部变量(如果它们是全局变量,请改用globals()
),您可以按以下方式访问它们:
for i in range(1, 9):
array = locals()["erik"+str(i)]
print array