Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa \"(\'a\', \'b\') dalam [\'b\', \'a\', \'foo\', \'bar\']\" tidak berfungsi sebagai Dijangka untuk Menyemak Berbilang Nilai dalam Senarai?

Mengapa \"(\'a\', \'b\') dalam [\'b\', \'a\', \'foo\', \'bar\']\" tidak berfungsi sebagai Dijangka untuk Menyemak Berbilang Nilai dalam Senarai?

Linda Hamilton
Linda Hamiltonasal
2024-11-01 05:52:02157semak imbas

Why Doesn't

Cara Mengesahkan Pelbagai Nilai Kepunyaan Senarai

Soalan:

Saya perlu tentukan sama ada beberapa nilai terdapat dalam senarai, tetapi kod berikut menghasilkan hasil yang tidak dijangka:

'a','b' in ['b', 'a', 'foo', 'bar']

Mengapa kod ini tidak berfungsi seperti yang dimaksudkan dan bagaimana saya boleh menyemak keahlian berbilang nilai dengan cekap?

Jawapan:

Python mentafsir coretan kod sebagai perbandingan tuple, bukan sebagai ujian keahlian senarai yang diingini. Untuk menguji kehadiran berbilang nilai dengan betul, gunakan pendekatan berikut:

all(x in container for x in items)

Di mana bekas ialah senarai atau jujukan lain untuk diuji dan item ialah boleh lelar yang mengandungi nilai untuk dicari.

Pertimbangan Tambahan:

  • Ujian Kelajuan: Pendekatan yang dinyatakan di atas berfungsi dengan baik dalam kebanyakan kes, tetapi menukar senarai kepada set mungkin menghasilkan hasil yang lebih cepat. Walau bagaimanapun, penukaran ini mungkin tidak selalunya berbaloi. Penanda aras menunjukkan bahawa kelebihan kelajuan berbeza-beza bergantung pada saiz dan jenis input.
  • Tetapkan Pertimbangan: Set boleh mempercepatkan semakan pembendungan untuk elemen boleh cincang, tetapi penciptaannya memerlukan overhed memori. Penjana menawarkan alternatif dan boleh menjadi lebih cekap untuk set data besar dengan elemen tidak boleh cincang.

Kesimpulan:

Semua(x dalam bekas untuk x dalam item) kaedah ialah penyelesaian yang serba boleh dan cekap untuk menyemak keahlian berbilang nilai dalam senarai atau bekas lain. Bergantung pada keperluan khusus, menukar kepada set atau menggunakan penjana boleh mengoptimumkan lagi prestasi.

Atas ialah kandungan terperinci Mengapa \"(\'a\', \'b\') dalam [\'b\', \'a\', \'foo\', \'bar\']\" tidak berfungsi sebagai Dijangka untuk Menyemak Berbilang Nilai dalam Senarai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn