是否有一些a,b这样max(a,b)!= max(b,a)?

时间:2019-10-20 09:30:48

标签: python python-3.x

在python 3.x中,是否有ab这样的max(a, b) != max(b, a)

ab应该是内置的python类型,并且不包含任何转换。

ab的类型可以是: num,float,bool,list,tuple ...

示例:

a = 1 # Correct
a = [1, 2] # Correct
a = float('nan') # Wrong

2 个答案:

答案 0 :(得分:17)

这满足所有条件:

>>> max(1.0, float("nan"))
1.0

>>> max(float("nan"), 1.0)
nan

这是因为除!=isfloat("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