Memahami Gelagat Operasi Boolean dan Bitwise pada Lists vs. NumPy Arrays
Pengenalan
Dalam Python, pengendali 'dan' dan '&' berbeza dalam kelakuannya apabila digunakan pada senarai dan tatasusunan NumPy. Perbezaan ini boleh membingungkan, terutamanya jika anda tidak biasa dengan operasi bitwise.
Operasi Boolean vs. Bitwise
'dan' ialah pengendali logik yang menguji sama ada kedua-duanya operannya secara logiknya Benar. '&', sebaliknya, ialah pengendali bitwise yang melakukan operasi bitwise (cth., AND, OR, XOR) pada operannya.
Gelagat dengan Senarai
Apabila digunakan dengan senarai, 'dan' menilai item senarai sebagai nilai boolean. Jika semua item adalah Benar, 'dan' menilai kepada Benar; jika tidak, ia menilai kepada Palsu. Contohnya:
mylist1 = [True, True, True, False, True] mylist2 = [False, True, False, True, False] mylist1 and mylist2 # Output: [False, True, False, True, False]
'&', walau bagaimanapun, tidak menyokong operasi bitwise pada senarai. Ia menimbulkan TypeError kerana senarai mengandungi unsur arbitrari.
mylist1 & mylist2 # Output: TypeError: unsupported operand type(s)
Gelagat dengan Tatasusunan NumPy
Dengan tatasusunan NumPy, gelagatnya berbeza. Tatasusunan NumPy menyokong pengiraan bervektor, bermakna operasi boleh dilakukan pada berbilang elemen serentak.
'dan' tidak boleh digunakan pada tatasusunan NumPy dengan panjang lebih daripada satu kerana tatasusunan tidak mempunyai nilai boolean yang mudah.
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
Walau bagaimanapun, '&' boleh digunakan pada tatasusunan NumPy boolean untuk melaksanakan operasi DAN bitwise dari segi elemen.
np_array1 & np_array2 # Output: array([False, True, False, False, False], dtype=bool)
Ringkasan
Atas ialah kandungan terperinci Bagaimanakah `dan` dan `&` Berbeza Apabila Digunakan dengan Senarai dan Tatasusunan NumPy dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!