2013-07-16 73 views
2

我正在製作一個讀取電子表格的程序。對於每一列,我的程序都會在該列的每一行中創建一個所有值的列表。爲了決定我需要多少個列表,我使用了變量columnBound,它是電子表格中列的總數。我如何製作一個程序,如果有3列,有時會創建3個列表,如果有8列,有時會創建8個?例如,如果總是有3列,我知道我可以很容易地擁有list1,list2,list3,並根據需要構建它們,但是如何讓我的程序基於columnBound構建動態數量的列表?如何在python中創建未知數量的變量

這就像我想

for x in range (0, columnBound): 
    listx = [] 

在那裏我將不得不列表1,列表2,......一路LISTX(或listcolumnBound)

我很新的節目,很想概念幫助,在正確的方向點在哪裏。我不完全知道如何谷歌這個問題,因爲它是非常抽象的。

謝謝!

附加信息:

我的程序將使用電子表格作爲輸入。每列包含與特定商戶地址對應的5位數字參考號碼。然後,它將採用不同的電子表格,其中每行都有一個引用代碼,但需要將地址插入最後一列。我將查詢每個列表以查看它是否具有匹配的引用代碼並將其輸入到電子表格的相應地址中。有時我會有5個地址欄,有時我可能會有8個。我知道製作一個明確鍵入的程序(我專門創建列表1-8,如果有9個地址欄,第9個會被排除)是不好的實踐。我想學習如何讓我的程序適應有多少列。

+2

使用列表的清單在這裏可能會更好。 –

+0

[動態變量]的可能重複(http://stackoverflow.com/questions/10963804/dynamic-variable) – abarnert

+0

我發現它令人耳目一新,我試圖做到這一點,當我是一個初學者,我不斷看到新人嘗試的問題嘗試以編程方式修改變量名稱 – Stephan

回答

1

你可以用列表的列表:

如:

[['col1','col2'],[1,2]] 

這種方式,你可以有一個列表的動態數量。

1

您應該使用列表或列表的字典列表。

0

使用列表清單來完成此操作。 此行:

list = [[0] * 3] * 3 創建一個帶有三個引用的列表[0,0,0]。

+0

首先,調用列表'list'是個好主意。其次,現在您有一個列表,其中包含三個對*相同*列表的引用。如果你做了'list [0] [0] = 1',那麼你的列表就變成了'[[1,0,0],[1,0,0],[1,0,0]]'。 –

+0

感謝您指出這一點。我知道命名列表LIST是一個壞主意,但是,很明顯這是一個列表。我沒有意識到我的代碼存在這樣的問題。不知道你可以做這樣的事情。謝謝 –

0

您可以創建lists.You的列表可以使用CSV提取每一行。

rows=list() 
    for x in range(0, columnBound): 
     rows.append(extracted_rows_in_each_column) 

輸出將如下所示:rows = [[行col#1的值],[行col#2的值],.......]

rows=[[values of rows col #1],[values of rows col #2],.......] 
0

在你的情況,我認爲這是最好用我的圖書館pyexcel將讀取你的Excel文件,讓你在統一的數據矩陣中的數據。您還可以將自定義格式添加到數據矩陣。然後像使用二維數組那樣使用它。

假設你有在Excel中的數據文件

1 2 3 
4 5 6 
7 8 9 

這裏是你展示如何可以隨機訪問單元中的示例代碼:

>>> import pyexcel 
>>> reader = pyexcel.Reader("example.xls") 
>>> print reader[1][1] 
5 

下面是the tutoral on its usage