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
Libérer: 2024-11-26 05:22:14
original
1071 Les gens l'ont consulté

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]
Copier après la connexion

'&', 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)
Copier après la connexion

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
Copier après la connexion

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)
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal