Maison >développement back-end >Tutoriel Python >Comment les fonctions `any()` et `all()` de Python fonctionnent-elles pour une évaluation efficace de la véracité des itérables ?

Comment les fonctions `any()` et `all()` de Python fonctionnent-elles pour une évaluation efficace de la véracité des itérables ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-04 08:02:33501parcourir

How Do Python's `any()` and `all()` Functions Work for Efficient Truthiness Evaluation of Iterables?

Comprendre les fonctions any() et all() de Python

Fonctions intégrées en Python, any() et all(), jouer un rôle crucial dans l’évaluation de la véracité des valeurs au sein d’un itérable. Ces fonctions offrent des moyens concis et efficaces de tester plusieurs conditions.

any() Function

any() détermine si un élément d'un itérable est vrai. Il renvoie True même si une seule valeur True est présente ; sinon, il renvoie False.

Exemple :

my_list = [0, False, 'Hello', 1, '']
print(any(my_list))  # Outputs True as 'Hello' and 1 are True

Fonction all()

all(), sur d'autre part, vérifie si chaque élément d'un itérable est vrai. Il ne renvoie True que si tous les éléments sont True ; sinon, il renvoie False.

Exemple :

my_list = [True, 1, 'True']
print(all(my_list))  # Outputs True as all elements are True

Vérité et évaluation logique

any() et tout () effectuent essentiellement des opérations logiques OU et ET, respectivement. Comprendre leur comportement de véracité est essentiel.

Table de vérité :

Iterable Values any() all()
All True True True
All False False False
Mixed True and False True False
Empty Iterable False True

Comprendre votre code

Dans votre code, vous utilisez une combinaison de any() et all() pour vérifier si une valeur dans un tuple est différente tout en vous assurant que toutes les valeurs ne sont pas différentes. Cependant, le résultat que vous attendiez n'a pas été obtenu en raison d'un malentendu dans l'évaluation du code :

d = defaultdict(list)
print(list(zip(*d['Drd2'])))  # [(1, 1), (5, 6), (0, 0)]
print([any(x) and not all(x) for x in zip(*d['Drd2'])])  # [False, False, False]

Dans ce cas, any(x) vérifie si une valeur dans un tuple est différente (c'est-à-dire True), tandis que all(x) garantit que toutes les valeurs ne sont pas différentes (c'est-à-dire False). Puisque (1, 1), (5, 6) et (0, 0) ont tous des valeurs différentes, il évalue correctement les trois tuples comme [False, False, False].

Pour obtenir le résultat souhaité , vous pouvez modifier le code comme suit :

print([x[0] != x[1] for x in zip(*d['Drd2'])])  # [False, True, False]

Cela vérifie directement si le premier et le deuxième élément de chaque tuple sont différents, ce qui donne le résultat attendu [False, True, Faux].

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn