[英]If I'm using a for loop to generate a list of strings, how do I create a list of the variables, and not a list of the strings?
我有5個名為l1
, l2
, l3
, l4
和l5
:
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是一個字符串,該字符串實質上將for循環中的數字與“ l”連接起來。
所以看起來像'l1'
, 'l2'
, 'l3'
但是如果我用
A.append(temp)
在循環內,輸出列表看起來像一個字符串列表['l1', 'l2', 'l3', ....]
我想我很困惑,因為我不知道如何獲取字符串,然后說,我不希望字符串'l1'
,我想返回變量l1
的列表。 我想我想弄清楚是否我的全局名稱空間變量中一直有一個名為l1
, l2
, l3
到l10000
,我該如何編寫代碼以創建一個新列表,該列表是所有列表的列表l1
, l2
, l3
等。
對於5個列表,只需創建一個列表:
A = [l1, l2, l3, l4, l5]
您可以使用循環來完成此操作,但這將很麻煩。 就像是:
A = [ vars()['l'+str(id)] for id in range(1,6) ]
最好將您的列表存儲在類似列表或字典的開頭。 這樣一來,它們就不會影響其他變量,因此您可以輕松地將它們作為一個組來引用。
如果您有更多列表,請嘗試在創建時將它們添加到“列表列表”中。
否則,如其他答案所述,創建列表:
A = [l1,l2,l3,l4,l5]
這聽起來像是您想通過使用具有與變量名之一匹配的值的字符串在運行時動態引用列表對象的一些實例。 通常這是一個非常糟糕的主意,我無法理解為什么您需要這樣做。
問題是您試圖遍歷一個實際上不存在的列表。 為了正確理解這一點,請想象一下,如果您被告知要開車前往一系列地點,而沒有被指示去往那些地點(僅是建築物的名稱,五角大樓,西爾斯大廈等),甚至之間也沒有任何道路。 道路不會建立自己,數據結構也不會建立。
另一種駭人聽聞的方式,當然不建議這樣做:
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]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.