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 ?

Comment `and` et `&` diffèrent-ils lorsqu'ils sont utilisés avec des listes et des tableaux NumPy en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-26 05:22:14969parcourir

How Do `and` and `&` Differ When Used with Lists and NumPy Arrays in 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é

  • Utilisez « et » pour comparer des valeurs booléennes ou évaluer des expressions logiques.
  • Utilisez « » &' pour effectuer des opérations au niveau du bit sur des entiers ou des tableaux booléens NumPy.
  • Les listes ne peuvent pas être combinés à l'aide de '&' car ils peuvent contenir des éléments arbitraires.
  • Les tableaux NumPy peuvent prendre en charge les opérations bit à bit vectorisées avec '&' mais gèrent 'et' différemment des listes en raison de leur nature vectorisée.

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