在python 3.x中,是否有a
,b
这样的max(a, b) != max(b, a)
?
a
和b
应该是内置的python类型,并且不包含任何转换。
a
和b
的类型可以是:
num,float,bool,list,tuple ...
示例:
a = 1 # Correct
a = [1, 2] # Correct
a = float('nan') # Wrong
答案 0 :(得分:17)
这满足所有条件:
>>> max(1.0, float("nan"))
1.0
>>> max(float("nan"), 1.0)
nan
这是因为除!=
或is
与float("nan")
之外的任何比较总是返回false。
更一般地说,当max(a, b) != max(b, a)
的类型不提供总订单时,我们可以拥有a, b
。正如Daniel Mesejo指出的那样,布景也具有此属性。对于集<
的意思是“严格子集”,但是对于{1, 2}
和{3, 4}
来说,两者都不是另一个严格子集,因此:
>>> max({1, 2}, {3, 4})
{1, 2}
>>> max({3, 4}, {1, 2})
{3, 4}
从技术上讲,这没有max(a, b) != max(b, a)
,因为1 == True
,但是仍然有明显的区别:
>>> max(True, 1)
True
>>> max(1, True)
1
答案 1 :(得分:5)
根据documentation,在集合上使用max
会产生未定义的结果:
因此,对于函数而言,集合不是适当的参数 取决于总排序(例如min(),max()和sorted() 给定一组列表作为输入,则产生不确定的结果。
这里是一个例子,
a = {1, 2}
b = {2, 3}
print(max(b, a) != max(a, b))
输出
True