答案 0 :(得分:1)
您可以轻松地为此定义一个函数:
def min2(iterator, threshold = 0):
minvalue = None
for x in iterator:
if (x > threshold) and (x < minvalue or minvalue is None):
minvalue = x
return minvalue
使用一些断言对其进行测试:
assert min2([0, 10, 0]) == 10
assert min2([3, 7, 5]) == 3
assert min2([6, 4, 10]) == 4
assert min2([10, 10, 101], threshold=100) == 101
答案 1 :(得分:1)
尝试以下代码段。
import numpy as np
lst2 = np.array([x.pos for x in lst])
lst2[lst2==0]=np.max(lst2)
print(np.min(lst2,axis=0))
输出: [3 4 5]
答案 2 :(得分:1)
如果您只能使用单线,则可以采用以下解决方案:
lst2 = list(map(lambda *args: min(arg for arg in args if arg != 0), *[x.pos for x in lst]))
min
替换为在过滤零值后应用min
的lambda。