En python 3.x, y en a-t-il a
, b
comme ça max(a, b) != max(b, a)
?
a
et b
doit être de type python intégré et ne contenir aucune conversion.
Le type de a
et b
peut être: num, float, bool, list, tuple ...
Exemple:
a = 1 # Correct
a = [1, 2] # Correct
a = float('nan') # Wrong
max
est une fonction intégrée qui prend en entrée un objet itérable . Donc,a,b
c'est la même chose que parb,a
conséquentmax(a,b)
doit être égalmax(b,a)
float('nan')
n'est pas un type intégré. Je suppose que «type intégré» signifierait tout ce que vous pouvez créer sans avoir à en créer un nouveauclass
.float('nan')
, alors pourquoi? Pour être clair, vous êtes autorisé à poser une question dans laquelle vous excluez quelque chose commefloat('nan')
si vous voulez; ce n'est pas le problème. Le problème est juste que personne ne sait ce que vous essayez de demander.Réponses:
Cela répond à tous les critères:
En effet, toute comparaison autre que
!=
ouis
avecfloat("nan")
renvoie toujours false.Plus généralement, nous pouvons en avoir
max(a, b) != max(b, a)
lorsque le (s) type (s)a, b
ne fournissent pas de commande totale. Comme le souligne Daniel Mesejo, les ensembles ont également cette propriété. For sets<
signifie 'strict subset', mais avec{1, 2}
et{3, 4}
ni l'un ni l'autre n'est un sous-ensemble strict de l'autre, donc:Celui-ci n'a techniquement pas
max(a, b) != max(b, a)
parce que1 == True
, mais il y a toujours une différence observable:la source
float("nan")
n'est pas intégré, qu'est-ce que c'est? Il est certainement intégré.float('nan')
est un flottant. Il est écritfloat
juste là, donc je ne sais pas ce que vous attendiez d'autre. Vous pouvez le vérifier avectype
si vous le souhaitez.max
comportement est un artefact de le définir différemment de Cfmax
(qui garantit la propagation de NaN), au lieu de cela comme quelque chose commea<b ? b : a
qui produit toujoursa
lorsque la comparaison est fausse. NaN est écrit "non ordonné". tout autre numéro,a < NaN
est donc toujours faux, et est ainsiNaN < b
Selon la documentation , en utilisant
max
d'ensembles produit des résultats indéfinis:Voici un exemple,
Production
la source
min
etmax
) ou un ordre (poursorted
).