2011-03-18 44 views
2

我試圖根據header_count中的編號創建多個列表。下面的代碼應該生成3個列表,但是我得到一個語法錯誤。Python:根據計數創建多個列表

​​3210
+0

如果你要產生3只列出,這是非常奇怪的設置'header_count'到4最好設置'header_count = 3'和迭代'因爲我在的xrange(header_count)'。 – 2011-03-18 23:10:01

回答

10

這是我的你想要什麼解釋,我希望我猜對(你是不是很清楚)。

header_count = 4 
headers = [[] for i in range(1, header_count)] 

現在你可以使用這樣的:

headers[1].append("this goes in the first header") 
headers[2].append("this goes in the second header") 
+0

我試圖創建三個單獨列出名單。所以我需要header_1,header_2和header_3作爲列表 – Harpal 2011-03-18 22:48:39

+0

爲什麼?這實際上是一個不好的做法。這樣你可以使用它作爲'header [0]','header [1]','header [2]'。 – orlp 2011-03-18 22:50:04

1

你想要的是創建一個列表的列表:

header_count = 4 
header = [] 
for i in range(header_count): 
    header[i] = [] 

在頭變量引用含有4列表名單。每個列表可以訪問如下:

header[0].append(1) 
header[1].append("Hi") 
header[2].append(3.14) 
header[3].append(True) 
+0

'header [0] .append(1)'是一個索引異常。 – orlp 2011-03-18 22:59:42

+0

這是行不通的,也許應該是: '爲我在範圍內(1,header_count): header.append([])' – 2011-03-18 23:12:07

0

你是什麼意思header_%s%是mod運算符,當然你不能指定涉及運算符的表達式。這就像寫

a+b = c 

您不能分配到a+b,也不能分配給header_%s

您的意思是?

header_lists = [[] for i in range(1,header_count)] 
1

如果需要列表名稱(因爲它來自於nightcracker回答您的評論似乎),你可以使用列表的字典:

header_count = 4 
listDict = {} 
for i in range(1, header_count): 
    listDict["header_"+str(i)] = [] 

然後你可以使用header_1,header_2查閱字典, header_3作爲鍵。

+0

請不要鼓勵不好的做法。 – orlp 2011-03-18 22:59:01

+0

這就是他似乎要求的!人們可以永遠不知道,也許是即使它是一個可怕的做法好奇心。 – 2011-03-18 23:03:08

+0

字典是合適的數據結構,如果名稱是動態生成的,並有一定的信息內容超出了一個簡單的計數器(見回答以下問題[如何,可以任您動態創建變量 - 在 - python的-via-到-A-while循環(http://stackoverflow.com/questions/5036700/how-can-you-dynamically-create-variables-in-python-via-to-a-while-loop))。如果變量的名稱是多餘的一個簡單的計數或索引,那麼清單是合適的數據結構。 – JoshAdel 2011-03-19 00:23:53