Heim > Backend-Entwicklung > Python-Tutorial > Wie unterscheiden sich „and' und „&' bei der Verwendung mit Listen und NumPy-Arrays in Python?

Wie unterscheiden sich „and' und „&' bei der Verwendung mit Listen und NumPy-Arrays in Python?

Mary-Kate Olsen
Freigeben: 2024-11-26 05:22:14
Original
970 Leute haben es durchsucht

How Do `and` and `&` Differ When Used with Lists and NumPy Arrays in Python?

Verstehen des Verhaltens von booleschen und bitweisen Operationen auf Listen im Vergleich zu NumPy-Arrays

Einführung

In Python unterscheiden sich die Operatoren „and“ und „&“ in ihrem Verhalten, wenn sie für Listen und NumPy verwendet werden Arrays. Dieser Unterschied kann rätselhaft sein, insbesondere wenn Sie mit bitweisen Operationen nicht vertraut sind.

Boolesche vs. bitweise Operationen

'and' ist ein logischer Operator, der testet, ob beides funktioniert seiner Operanden sind logisch wahr. „&“ hingegen ist ein bitweiser Operator, der bitweise Operationen (z. B. AND, OR, XOR) an seinen Operanden ausführt.

Verhalten mit Listen

Bei Verwendung mit Listen wertet „und“ die Listenelemente als boolesche Werte aus. Wenn alle Elemente wahr sind, wird „und“ als wahr ausgewertet; andernfalls wird der Wert als „Falsch“ ausgewertet. Beispiel:

mylist1 = [True, True, True, False, True]
mylist2 = [False, True, False, True, False]

mylist1 and mylist2  # Output: [False, True, False, True, False]
Nach dem Login kopieren

'&' unterstützt jedoch keine bitweisen Operationen auf Listen. Es wird ein TypeError ausgelöst, da Listen beliebige Elemente enthalten.

mylist1 & mylist2  # Output: TypeError: unsupported operand type(s)
Nach dem Login kopieren

Verhalten mit NumPy-Arrays

Bei NumPy-Arrays ist das Verhalten anders. NumPy-Arrays unterstützen vektorisierte Berechnungen, was bedeutet, dass Operationen an mehreren Elementen gleichzeitig ausgeführt werden können.

'und' kann nicht für NumPy-Arrays mit einer Länge größer als eins verwendet werden, da Arrays keinen einfachen booleschen Wert haben.

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
Nach dem Login kopieren

Allerdings kann „&“ für NumPy-Arrays mit booleschen Werten verwendet werden, um bitweise UND-Operationen durchzuführen elementweise.

np_array1 & np_array2  # Output: array([False, True, False, False, False], dtype=bool)
Nach dem Login kopieren

Zusammenfassung

  • Verwenden Sie „und“, um boolesche Werte zu vergleichen oder logische Ausdrücke auszuwerten.
  • Verwenden Sie „ &', um bitweise Operationen an Ganzzahlen oder booleschen NumPy-Arrays auszuführen.
  • Listen können nicht sein kombiniert mit „&“, da sie beliebige Elemente enthalten können.
  • NumPy-Arrays können vektorisierte bitweise Operationen mit „&“ unterstützen, behandeln „und“ jedoch aufgrund ihrer vektorisierten Natur anders als Listen.

Das obige ist der detaillierte Inhalt vonWie unterscheiden sich „and' und „&' bei der Verwendung mit Listen und NumPy-Arrays in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage