【发布时间】:2011-09-09 10:30:50
【问题描述】:
我想执行以下操作:
a=max(a,3)
b=min(b,3)
但有时a 和b 可能是None。
我很高兴地发现在max 的情况下效果很好,给出了我需要的结果3,但是如果b 是None,b 仍然是None...
任何人都可以想到一个优雅的小技巧,让min 返回数字,以防万一没有参数之一?
【问题讨论】:
-
它没有做正确的事情。它恰好在两种情况之一中给出了您期望的结果,因为
NoneType和int之间的无意义比较返回一个固定值,而不管整数值如何。在 Python 3 中,当您执行类似操作(比较没有有意义的排序的类型)时,您会得到一个TypeError。 -
似乎是 Python 中的一个不一致之处,最重要的是。
-
如果您可以将 None 替换为默认的 int 值(如 0),您可以执行以下操作:
max(a,3,key=lambda x: x or 0)
标签: python python-2.x