如何选择最低编号。从列表>> 0吗
我试过了:
min()
即
>>> x = (-3155, 611, 1284)
>>> min_x_more_than_0 = min([i for i in x if i > 0])
>>> min_x_more_than_0
611
必须有更好/更快的方法来做到这一点。想象一下,X的长度是1,000,000,000,在列表中循环是非常低效的。
答案 0 :(得分:5)
如果订购数据,您可以使用二进制搜索在O(log n)中执行此操作。只需bisect
为0并索引相邻元素。
如果数据无序,则不能比O(n)做得更好,因为无论如何都必须检查每个元素。
您可以使用numpy:
将整个计算推送到C代码中>>> import numpy as np
>>> a = np.array(x)
>>> a[a > 0].min()
611