Rantaian Operator Perbandingan: Mengapa 1 dalam [1,0] == Benar Menilai Kepada Salah
Dalam Python, hasil yang mengejutkan boleh timbul apabila membandingkan hasil ujian keahlian "dalam" dengan Benar:
<code class="python">1 in [1,0] == True # Unexpectedly returns False</code>
Untuk memahami tingkah laku ini, adalah penting untuk mengetahui bahawa Python menggunakan rantaian operator perbandingan. Ini bermakna berbilang operator perbandingan dalam ungkapan dinilai secara berurutan. Dalam kes kod yang disebutkan di atas, ungkapan itu ditafsirkan sebagai:
<code class="python">(1 in [1,0]) == True</code>
Memecahkannya lagi:
Rahsia Di Sebalik [1,0] == Benar
Sebab untuk keputusan yang tidak dijangka ini terletak pada cara Python mengendalikan nilai dan perbandingan boolean. Apabila membandingkan senarai dengan nilai boolean, Python mula-mula cuba menukar senarai itu kepada boolean. Dalam kes [1,0], penukaran ini menghasilkan Palsu kerana senarai tidak kosong dianggap Benar dalam Python.
Rantai Terbuka
Oleh itu, ungkapan asal dipermudahkan kepada:
<code class="python">True == False</code>
yang jelas menilai kepada Salah. Ini menerangkan sebab 1 dalam [1,0] == True mengembalikan Palsu.
Implikasi Tambahan
Tingkah laku rantaian operator ini juga berlaku kepada operator perbandingan yang lain. Contohnya:
<code class="python">a < b < c</code>
terjemah kepada:
<code class="python">(a < b) and (b < c)</code>
Ini memastikan b dinilai sekali sahaja.
Kesimpulan
Memahami konsep rantaian operator perbandingan adalah penting untuk mentafsir gelagat ungkapan tersebut. Dengan menyedari bahawa susunan penilaian adalah dari kiri ke kanan, kami boleh menjangka keputusan dengan tepat dan mengelakkan sebarang kekeliruan.
Atas ialah kandungan terperinci Mengapakah `1 dalam [1,0] == Benar` Menilai kepada Salah dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!