如何在python中使用字符串引用列表

时间:2015-05-20 19:02:47

标签: python list

我有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循环中生成的字符串。现在它认为数组是一个字符串而不是我想要的列表对象。我怎样才能做到这一点?

4 个答案:

答案 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