在Python中从for循环调用列表变量

时间:2016-05-06 01:37:26

标签: python loops variables for-loop

如果我预先设置了相同名称的列表变量,除非它们以不同的数字结尾,我如何在for循环中创建将调用这些列表的变量?

我的问题是我在for循环中创建的变量是一个字符串。我需要它来认识到它只是一个变量的名称。

示例:

list1 = [2, 4, 3, 7]
list2 = [4, 5, 6]
list3 = [9, 5, 7, 8, 3, 2, 1]
list4 = [4, 1]

for i in range(1,5):
    print ("list%d" % (i))

这导致打印字符串:

list1

list2

list3

list4

我希望它打印出实际的列表。

感谢您的帮助!

4 个答案:

答案 0 :(得分:3)

您可以使用'eval'来实现以下目标。

list1 = [2, 4, 3, 7]
list2 = [4, 5, 6]
list3 = [9, 5, 7, 8, 3, 2, 1]
list4 = [4, 1]

for i in range(1,5):
    print (eval('list%d'% (i)))

但正如评论中所述,不建议这样做。您应该dictlist list重写,例如

my_list = [[2, 4, 3, 7],
           [4, 5, 6],
           [9, 5, 7, 8, 3, 2, 1],
           [4, 1]]

for i in range(len(my_list)):
    print (my_list[i])

请注意,我将变量list的名称更改为my_list,因为单词list是保留字。

答案 1 :(得分:2)

您正在打印字符串文字(即纯文本)而不是每个列表的实际变量。你可以做的一件事就是将这些列表放在一个类或字典中。

假设它是一个类:

class cls:
    list1 = [2, 4, 3, 7]
    list2 = [4, 5, 6]
    list3 = [9, 5, 7, 8, 3, 2, 1]
    list4 = [4, 1]


for i in range(1, 5):
    print getattr(cls, 'list{}'.format(i))

假设它是字典:

lists = {
    'list1': [2, 4, 3, 7],
    'list2': [4, 5, 6],
    'list3': [9, 5, 7, 8, 3, 2, 1],
    'list4': [4, 1],
}

for k, v in lists.items():
    print '{0}={1}'.format(k, v)

答案 2 :(得分:1)

正如评论中所建议的那样,您应该考虑使用其他一些数据结构。

如果你仍然想要这个。您可以尝试以下

for i in range(1,5):
    print (eval("list"+str(i)))

答案 3 :(得分:1)

您的代码打印字符串而不是列表变量的问题

循环遍历列表变量

list1 = [2, 4, 3, 7]
list2 = [4, 5, 6]
list3 = [9, 5, 7, 8, 3, 2, 1]
list4 = [4, 1]

for i in list1:
    print (i)

或者您可以将所有列表放在列表中并循环遍历

new_list=[[2, 4, 3, 7],[4, 5, 6],[9, 5, 7, 8, 3, 2, 1],[4, 1]]

for e in new_list:
    print(e)

您还可以将它们全部放在字典结构{key,value}

dic_of_lists={"list1":[2, 4, 3, 7],"list2":[4, 5, 6]
          ,"list3":[9, 5, 7, 8, 3, 2, 1],"list4":[4, 1]}

#to loop through the dictionary
for key,value in dic_of_lists.items():
    print(key+" : ")
    print(value)