如果我使用for循环生成字符串列表,如何创建变量列表,而不是字符串列表?

时间:2012-01-26 15:28:07

标签: python

我有5个名为l1l2l3l4l5的列表:

l1 = [1,2]
l2 = [3,4]
l3 = [5,6]
l4 = [7,8]
l5 = [9,10]

如果我想创建一个新对象A作为列表列表,我可以轻松地执行此操作:

A = []
A.append(l1)
A.append(l2)
A.append(l3)

依此类推....而A将如下所示:

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

但是我可以使用for循环来使这更容易吗?

我可以尝试:

A = []
    For q in range(1,6):
    temp = 'l' + str(q)

接下来我该怎么办? temp是一个字符串,它基本上将'l'与for循环中的数字连接起来。

所以它看起来像'l1''l2''l3'

但如果我使用

A.append(temp)

在循环内部,输出列表看起来像字符串列表['l1', 'l2', 'l3', ....]

我想我很困惑,因为我不知道如何取一个字符串,然后说,我不想要字符串'l1',我想返回变量列表{{1 }}。我想我是想弄清楚,不管怎样,我的全局名称空间变量名为l1l1l2一直到l3,怎么可能我编写代码来创建一个新列表,列表包含所有列表l10000l1l2等等。

4 个答案:

答案 0 :(得分:5)

对于5个列表,只需创建一个列表:

A = [l1, l2, l3, l4, l5]

你可以用循环来做,但那会很混乱。类似的东西:

A = [ vars()['l'+str(id)] for id in range(1,6) ]

最好将列表存储在列表或字典之类的内容中。这使他们不受其他变量的影响,因此您可以轻松地将它们作为一个组来引用。

答案 1 :(得分:1)

如果您有更多列表,请尝试在创建时将它们添加到“列表”中。

否则,如其他答案所述,创建列表:

A = [l1,l2,l3,l4,l5]

答案 2 :(得分:0)

听起来是您希望在运行时通过使用值与您的某个变量名匹配的字符串动态引用列表对象的几个实例。这通常是一个非常糟糕的主意,我无法理解为什么你需要这样做。

问题是您正在尝试迭代实际不存在的列表。从正确的角度来看,想象一下,如果你被告知开车到一系列地点而没有给出这些地点的指示(只有建筑物的名称。五角大楼,西尔斯大厦等),甚至没有任何道路。道路不是自己构建的,数据结构也不构建。

答案 3 :(得分:-3)

另一种hacky方式,当然不推荐:

l0 = [1,]
l1 = [2,]
l2 = [3,]

why_do_this = "["
for i in xrange(3):
    why_do_this += 'l%s,'%i
why_do_this+=']'
result=eval(why_do_this)
print result

[[1], [2], [3]]