Comment fonctionnent toutes les fonctions de Python
Lors de la comparaison de tuples, les fonctions intégrées any() et all() entrent en jeu jouer. Voici en quoi ils diffèrent :
any()
any() est évalué à True si au moins un élément d'un itérable est Truthy (c'est-à-dire pas False, 0, '', etc.).
all()
all(), de l'autre main, renvoie True uniquement lorsque chaque élément d'un itérable est Truthy.
Comprendre le cas d'utilisation
Dans l'extrait de code fourni :
print [any(x) and not all(x) for x in zip(*d['Drd2'])]
Chacun des tuples de zip(*d['Drd2']) est évalué dans le contexte de any(x) et non de all(x). Cependant, le résultat inattendu [Faux, Faux, Faux] soulève des questions.
Interprétation des erreurs
Selon la table de vérité pour tous :
any(x) | all(x) | any(x) and not all(x) |
---|---|---|
True | False | True |
False | True | False |
True | True | False |
False | False | False |
Dans ce cas, tous les tuples sont constitués de nombres identiques (c'est-à-dire des valeurs vraies), donc any(x) serait toujours vrai, et all(x) serait également vrai. Par conséquent, any(x) et not all(x) doivent toujours être évalués à False, ce qui n'est pas reflété dans le résultat.
Cause de l'erreur
L'erreur réside dans l'attente erronée que (x[0] != x[1]) serait une expression de vérité. Cependant, lorsque les nombres dans le tuple sont égaux (par exemple, (1, 1)), (x[0] != x[1]) est évalué à False.
Corriger la logique
Pour déterminer avec précision si des valeurs au sein d'un tuple sont différentes, vous pouvez utiliser la logique suivante :
print [x[0] != x[1] for x in zip(*d['Drd2'])]
Cette expression compare correctement les éléments correspondants de chaque tuple pour identifier les différences, comme prévu.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!