2016-06-15 54 views
-1

我有一個電子表格,其中包含我已經使用以下代碼導入到python中的數據;在python中將多個列表變成一個列表

import xlrd 

wb = xlrd.open_workbook('data.xls') 

sh = wb.sheet_by_index(0) 

for rownum in range(sh.nrows): 
    print sh.row_values(rownum) 

這會打印出電子表格的每一行;例如。

[13.0, 2.0, 92.0, 83.0] 
[10.0, 8.0, 80.0, 78.0] 
[7.0, 4.0, 121.0, 60.0] 

如何獲取這些單獨的列表並將它們合併到一個看起來像的列表中;

test = [[13.0, 2.0, 92.0, 83.0], [10.0, 8.0, 80.0, 78.0], [7.0, 4.0, 121.0, 60.0]] 

感謝,

+0

@VasiliSyrakis它不是一個有效的副本。 – styvane

+0

也高度相關[Python中的「列表理解」是什麼意思?它如何工作,如何使用它?](http://stackoverflow.com/q/34835951) –

回答

0

只需用一個列表理解:

test = [sh.row_values(rownum) for rownum in range(sh.nrows)] 
+0

完美,謝謝。 – Loch

+0

我知道OP本身並沒有要求這樣做,但我喜歡你的答案,我想你可以將它添加到它:這可以稍微擴展,以便[將每列的名稱附加到行值](http://stackoverflow.com/a/23568655/5209610):'對於xrange(1,sheet.nrows)中的row_index:test = [{keys [col_index]:sheet.cell(row_index,col_index).value for範圍內的col_index(sh.ncols)}範圍內的row_index(sh.nrows)]'這可能對查看此問題的人有幫助。 –

0

循環之前剛加入這一行:

final = [] 

然後,而不是打印行更改爲:

final.append(sh.row_values(rownum)) 

它應該做你所要求的。

相關問題