Ujian Keahlian untuk Pelbagai Nilai dalam Senarai
Soalan:
Bagaimana seseorang boleh menguji jika berbilang nilai adalah ahli senarai dalam Python? Hasil yang dijangkakan ialah mengembalikan nilai boolean yang menunjukkan keahlian untuk setiap nilai, tetapi pendekatan semasa menghasilkan output yang tidak dijangka.
Penjelasan:
Coretan kod yang disediakan, ' a','b' dalam ['b', 'a', 'foo', 'bar'], tidak berfungsi seperti yang dimaksudkan kerana Python mentafsirkannya sebagai tuple dan bukannya ujian keahlian untuk nilai individu.
Jawapan:
Untuk menguji dengan betul keahlian berbilang nilai dalam senarai, gunakan ungkapan berikut:
<code class="python">all(x in ['b', 'a', 'foo', 'bar'] for x in ['a', 'b'])</code>
Ini akan mengembalikan True jika semua nilai dalam senarai kedua adalah ahli senarai pertama dan Palsu sebaliknya.
Pilihan Lain:
Menggunakan Set:
<code class="python">set(['a', 'b']).issubset(set(['a', 'b', 'foo', 'bar'])) {'a', 'b'} <= {'a', 'b', 'foo', 'bar'}</code>
Kaedah ini berfungsi dengan baik apabila elemen dalam senarai boleh dicincang, tetapi ia boleh menjadi tidak cekap jika senarainya besar.
Ujian Kelajuan:
Hasil penanda aras menunjukkan bahawa ujian subset (menggunakan set) biasanya lebih pantas daripada semua ungkapan, tetapi perbezaannya tidak ketara melainkan senarainya kecil dan operasi subset digunakan dengan set. Walau bagaimanapun, jika elemen dalam senarai tidak boleh dicincang atau jika senarainya besar, ungkapan semua mungkin lebih cekap.
Kesimpulan:
Menggunakan ungkapan semua umumnya merupakan amalan yang baik untuk menguji berbilang nilai dalam senarai, terutamanya apabila elemen tidak boleh dicincang dan apabila kecekapan menjadi kebimbangan. Jika elemen boleh dicincang dan senarainya kecil, ujian subset boleh memberikan kelebihan kelajuan yang sedikit.
Atas ialah kandungan terperinci Bagaimana untuk Menguji Keahlian Pelbagai Nilai dalam Senarai Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!