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

0 python

我有5所列出命名l1,l2,l3,l4l5:

l1 = [1,2]
l2 = [3,4]
l3 = [5,6]
l4 = [7,8]
l5 = [9,10]
Run Code Online (Sandbox Code Playgroud)

如果我想创建一个新对象A作为列表列表,我可以轻松地做到这一点:

A = []
A.append(l1)
A.append(l2)
A.append(l3)
Run Code Online (Sandbox Code Playgroud)

等等......并且A看起来像这样:

[[1,2],[3,4],[5,6],[7,8],[9,10]]
Run Code Online (Sandbox Code Playgroud)

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

我可以试试吗:

A = []
    For q in range(1,6):
    temp = 'l' + str(q)
Run Code Online (Sandbox Code Playgroud)

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

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

但是,如果我使用

A.append(temp)
Run Code Online (Sandbox Code Playgroud)

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

我想我很困惑,因为我不知道如何取一个字符串,然后说,我不想要字符串'l1',我想返回变量列表l1.我猜我想,如果莫名其妙地弄清楚,我曾在一个名为我的全局命名空间中的变量l1,l2,l3一路l10000,我怎么能写代码来制作新的清单是所有列表的列表l1,l2,l3等向前.

Dun*_*can 5

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

A = [l1, l2, l3, l4, l5]
Run Code Online (Sandbox Code Playgroud)

你可以用一个循环来做,但这将是凌乱的.就像是:

A = [ vars()['l'+str(id)] for id in range(1,6) ]
Run Code Online (Sandbox Code Playgroud)

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

  • 请不要像这样使用vars().以Duncan的最后建议为例:首先使用一个列表. (2认同)