如何选择最小数量。从列表>> 0?

时间:2017-03-15 00:52:12

标签: python list list-comprehension minimum

如何选择最低编号。从列表>> 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,在列表中循环是非常低效的。

1 个答案:

答案 0 :(得分:5)

如果订购数据,您可以使用二进制搜索在O(log n)中执行此操作。只需bisect为0并索引相邻元素。

如果数据无序,则不能比O(n)做得更好,因为无论如何都必须检查每个元素。

您可以使用numpy:

将整个计算推送到C代码中
>>> import numpy as np
>>> a = np.array(x)
>>> a[a > 0].min()
611