【发布时间】:2019-03-15 14:49:34
【问题描述】:
我在 Python 版本:2.7.12 |Anaconda 4.1.1(64 位)| (默认,2016 年 6 月 29 日,11:07:13)[MSC v.1500 64 位 (AMD64)]
我有一个表作为列表列表,比如“表”,第一个唯一元素列表是标题和一个列表,比如“cols”和一些表列。我想看看是否有比下面更快的方法来选择与 cols 的项目相对应的每个表列表的项目:
def select_cols(table, cols):
inds = [table[0].index(col) for col in cols]
return [[row[i] for i in inds] for row in table]
例子:
table = [['a','b','c','d'],[1,2,3,4],[5,6,7,8]]
cols = ['b','d']
print select_cols(table, cols)
>>[['b', 'd'], [2, 4], [6, 8]]
实际上我已经制作了一个应用程序,它通过读取大的 csv 文件来制作这些表,并以这种方式进行大量切片,所以我希望这个函数尽可能快地运行。此外,我不想在这项工作中使用 pandas,因为我想让应用程序保持轻便。
【问题讨论】:
-
只要使用内置的
csv模块 -
具体来说,
DictReader可能有用:docs.python.org/2/library/csv.html#csv.DictReader -
实际上数据也可能来自其他类型的文件,所以让我们考虑一下我们有一个列表列表作为表格和一个列列表供选择,我们尝试找到最快的方法去做
-
您的问题中是否还有其他限制/信息?
-
没有。它说得很好。谢谢!
标签: python python-2.7