以下是我输入csv文件的示例:
...
0.7,0.5,0.35,14.4,0.521838919218
0.7,0.5,0.35,14.4,0.521893472678
0.7,0.5,0.35,14.4,0.521948026139
0.7,0.5,0.35,14.4,0.522002579599
...
我需要选择最后一个浮点数>的顶行。随机数。我当前的实现非常慢(脚本有很多迭代的这个和外部循环):
for line in foo:
if float(line[-1]) > random.random():
res = line
break
...
如何让这更好更快?
我被建议使用bisect来完成这项任务,但我不知道该怎么做。
答案 0 :(得分:3)
最快的方法是使用bisect(假设浮动列表是有序的)。你可以这样做:
import bisect
float_list = [line[-1] for line in foo]
index = bisect.bisect(float_list, random.random())
if index < len(float_list)
result = foo[index]
else:
result = None # None exists
必须订购浮动列表才能使其生效。
答案 1 :(得分:1)
如果import the CSV file into SQLite,您实际上可以使用适当的SQL命令。 Python有一个built-in sqlite library可用于查询数据库。