Maison >développement back-end >Tutoriel Python >Comment `and` et `&` diffèrent-ils lorsqu'ils sont utilisés avec des listes et des tableaux NumPy en Python ?
Comprendre le comportement des opérations booléennes et au niveau du bit sur les listes par rapport aux tableaux NumPy
Introduction
En Python, les opérateurs « et » et « & » diffèrent dans leur comportement lorsqu'ils sont utilisés sur des listes et Tableaux NumPy. Cette différence peut être déroutante, surtout si vous n'êtes pas familier avec les opérations au niveau du bit.
Opérations booléennes et opérations au niveau du bit
'and' est un opérateur logique qui teste si les deux de ses opérandes sont logiquement vrais. '&', quant à lui, est un opérateur au niveau du bit qui effectue des opérations au niveau du bit (par exemple, AND, OR, XOR) sur ses opérandes.
Comportement avec les listes
Lorsqu'il est utilisé avec des listes, « et » évalue les éléments de la liste comme des valeurs booléennes. Si tous les éléments sont vrais, « et » est évalué à vrai ; sinon, il est évalué à False. Par exemple :
mylist1 = [True, True, True, False, True] mylist2 = [False, True, False, True, False] mylist1 and mylist2 # Output: [False, True, False, True, False]
'&', cependant, ne prend pas en charge les opérations au niveau du bit sur les listes. Il génère une TypeError car les listes contiennent des éléments arbitraires.
mylist1 & mylist2 # Output: TypeError: unsupported operand type(s)
Comportement avec les tableaux NumPy
Avec les tableaux NumPy, le comportement est différent. Les tableaux NumPy prennent en charge les calculs vectoriels, ce qui signifie que des opérations peuvent être effectuées sur plusieurs éléments à la fois.
'et' ne peut pas être utilisé sur les tableaux NumPy d'une longueur supérieure à un car les tableaux n'ont pas de valeur booléenne simple.
import numpy as np np_array1 = np.array(mylist1) np_array2 = np.array(mylist2) np_array1 and np_array2 # Output: ValueError: The truth value of an array with more than one element is ambiguous
Cependant, '&' peut être utilisé sur les tableaux NumPy de booléens pour effectuer des opérations ET au niveau du bit élément par élément.
np_array1 & np_array2 # Output: array([False, True, False, False, False], dtype=bool)
Résumé
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!