python python-3.x

python - ¿Hay alguna a, b tal que max(a, b)!=Max(b, a)?



python-3.x (2)

Esto satisface todos los criterios:

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

Esto se debe a que cualquier comparación que no sea != O is con float("nan") siempre devuelve falso.

En términos más generales, podemos tener max(a, b) != max(b, a) cuando el tipo (s) de a, b no proporciona un orden total. Como señala Daniel Mesejo, los conjuntos también tienen esta propiedad. Para conjuntos < significa ''subconjunto estricto'', pero con {1, 2} y {3, 4} ninguno es un subconjunto estricto del otro, entonces:

>>> max({1, 2}, {3, 4}) {1, 2} >>> max({3, 4}, {1, 2}) {3, 4}

Este técnicamente no tiene max(a, b) != max(b, a) porque 1 == True , pero todavía hay una diferencia observable:

>>> max(True, 1) True >>> max(1, True) 1

En python 3.x, ¿hay alguna a , b tal que max(a, b) != max(b, a) ?

b deben ser del tipo python incorporado y no contener ninguna conversión.

El tipo de b puede ser: num, float, bool, list, tuple ...

Ejemplo:

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


Según la documentation , el uso de max on sets produce resultados indefinidos:

Por consiguiente, los conjuntos no son argumentos apropiados para funciones que dependen del orden total (por ejemplo, min (), max () y sorted () producen resultados indefinidos dada una lista de conjuntos como entradas).

Aquí hay un ejemplo,

a = {1, 2} b = {2, 3} print(max(b, a) != max(a, b))

Salida

True