这是我输入的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用于此任务,但我不知道该怎么做。
最佳答案
最快的方法是使用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
必须订购浮动列表才能使其正常工作。
关于python - 适用于Python列表的SQL TOP 1模拟,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/821416/