使用python查找非null的最低值

时间:2014-01-13 05:51:35

标签: python min

我在python中使用了min(A,B,C,D)。这在找到最低值时非常有效,但是,如果在任何变量A,B,C或D中有空值(0值),它将返回空值(或0)。任何想法如何在我的情况下返回非null或非零值?感谢

3 个答案:

答案 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))