2016-06-15 55 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)) 

它应该做你所要求的。

相关问题