【发布时间】:2014-09-04 12:24:18
【问题描述】:
我想一次测试多个不等式,即
if (a < b < c < ...)
当所有值都存在时,这很好。然而,有时要比较的一个或多个变量的数值可能会丢失/未知;在我的上下文中,正确的行为是假设相关的不等式得到满足。假设我在值未知时分配了特殊值 None:我希望 < 运算符(或替代方法)的行为是:
>>> a = 1; b = 2; c = 3
>>> a < b < c # this works fine, obviously
True
>>> b = None
>>> a < b < c # would like this to return True
False
所以我想得到True,如果一个变量真的比另一个小,或者一个变量丢失(取任何特定的预先确定的非数值),或者两个变量都丢失了,我想要能够一次将比较串在一起,即a < b < c < ...
我也想用<= 和< 来做这件事。
谢谢
【问题讨论】:
-
我不认为你可以通过比较可靠地做到这一点 - 你会获得一个同时比较大于任何东西和小于任何东西的值。相反,我会定义一个函数,该函数接受一个可迭代的值并在非 None 值被排序时返回 True。
-
如果a为3,b为None,c为1,即使a不小于c,
a < b < c是否应该返回True? -
如果使用
None值,Python 3 将完全拒绝a < b < c。 -
@Kevin 是的,抱歉应该明确表示。由于正确解释了接受的答案,我基本上想排除未定义的值,只比较剩下的值。
标签: python missing-data inequalities