这是我输入的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/

10-12 22:03
查看更多