我在python中使用了min(A,B,C,D)。这在找到最低值时非常有效,但是,如果在任何变量A,B,C或D中有空值(0值),它将返回空值(或0)。任何想法如何在我的情况下返回非null或非零值?感谢
答案 0 :(得分:8)
我会使用过滤器来处理None,0,False等...
>>> min(filter(None, [1, 2, 0, None, 5, False]))
1
来自docs:
请注意,如果函数不是None,则filter(function,iterable)等效于[iterable for item(item)中的item项目]如果function为None,则[item for item for iterable if item]
答案 1 :(得分:6)
这会将任何0
推送到另一端(最大结束)
min(A, B, C, D, key=lambda x:(x==0, x))
或者您可以使用生成器表达式
min(x for x in (A, B, C, D) if x)
使用过滤器
min(filter(None, (A, B, C, D))
最后,使用itertools.compress
from itertools import compress
min(compress((A, B, C, D), (A, B, C, D)))
答案 2 :(得分:1)
min(v for v in (A,B,C,D) if not v in (None,0))