alv*_*vas 2 python list-comprehension list minimum
如何选择最小数量.从列表> 0?
我试过了:
min()在筛选器列表上执行a即
>>> x = (-3155, 611, 1284)
>>> min_x_more_than_0 = min([i for i in x if i > 0])
>>> min_x_more_than_0
611
Run Code Online (Sandbox Code Playgroud)
必须有更好/更快的方法来做到这一点.想象一下,X的长度是1,000,000,000,在列表中循环是相当低效的.
如果订购了数据,则可以使用二进制搜索在O(log n)中执行此操作.仅为bisect0并索引相邻元素.
如果数据是无序的,则不能比O(n)做得更好,因为无论如何都必须检查每个元素.
您可以使用numpy将整个计算推送到C代码:
>>> import numpy as np
>>> a = np.array(x)
>>> a[a > 0].min()
611
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |