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
Mary-Kate OlsenOriginal
2024-11-26 05:22:141036Durchsuche

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]

'&' 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)

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

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)

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!

Stellungnahme:
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