Memahami Gelagat mana-mana dan semua Fungsi Python
Sebarang dan semua Python menyediakan cara yang mudah untuk menilai kebenaran pelbagai elemen dalam satu lelaran . sebarang mengembalikan Benar jika mana-mana elemen adalah Benar, manakala semua mengembalikan Benar hanya jika semua elemen adalah Benar.
sebarang vs. semua
Secara intuitif, mana-mana elemen boleh digambarkan sebagai siri operator OR logik (||), dan semuanya sebagai satu siri operator AND logik (&&). Pemahaman ini membantu menjelaskan fungsinya:
Litar Pintas
Aspek penting dalam mana-mana dan semua ialah tingkah laku litar pintas mereka. Mereka menilai elemen secara berurutan sehingga mereka dapat menentukan hasilnya. Pengoptimuman ini menghalang traversal yang tidak perlu bagi keseluruhan lelaran.
Aplikasi dalam Contoh Diberi
Dalam contoh yang diberikan, kami menyasarkan untuk membandingkan tupel untuk menentukan sama ada sebarang nilai berbeza dan cetak Benar dalam kes itu. Output yang dijangkakan hendaklah [Salah, Benar, Salah]. Walau bagaimanapun, keputusan sebenar yang diperoleh ialah [False, False, False]. Percanggahan ini timbul daripada ungkapan yang digunakan:
[any(x) and not all(x) for x in zip(*d['Drd2'])]
Ungkapan dalam kurungan dinilai kepada Benar hanya jika sekurang-kurangnya satu elemen dalam tupel adalah Benar tetapi tidak semua elemen adalah Benar. Dalam kes yang disediakan, tiada tupel mengandungi nilai sedemikian. Oleh itu, hasilnya adalah salah [False, False, False].
Pelaksanaan Betul
Untuk mencapai tingkah laku yang dimaksudkan, seseorang boleh menggunakan ungkapan berikut sebagai ganti:
[x[0] != x[1] for x in zip(*d['Drd2'])]
Ungkapan ini membandingkan secara langsung elemen pertama dan kedua setiap tupel, mengembalikan True jika ia berbeza. Akibatnya, output [Salah, Benar, Salah] yang diingini akan diperolehi.
Atas ialah kandungan terperinci Bagaimanakah Fungsi `mana-mana` dan `semua` Python Berfungsi, dan Mengapa Perbandingan Tuples Saya Gagal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!