【发布时间】:2014-08-19 16:46:03
【问题描述】:
我正在做这样的事情来总结一行的许多元素:
for line in open(filename, 'r'):
big_list = line.strip().split(delim)
a = sum(int(float(item)) for item in big_list[start:end] if item)
# do some other stuff
这是通过一个大文件逐行完成的,其中一些项目可能会丢失,即等于''。如果我使用上面的语句来计算 a,那么脚本会比没有它时慢得多。有没有办法加快速度?
【问题讨论】:
-
因为 int('1.0') 引发异常
-
你在求和什么样的数据,有没有像 3.4 这样的实际浮点数?
-
@jonrsharpe,那更慢
-
一些快速的
timeit测试表明我可能给了你关于跳过[]s 的坏建议——将列表传递给sum会稍微快一些。不过,那里的收益可能微乎其微。 -
有几个问题。我不确定 numpy 或 pandas 是否处理不适合内存的非常大的文件。假设他们这样做,我有几个非常复杂的条件来决定是否处理一条线。所以我不认为我可以使用它们