Dalam Python, menentukan sama ada unsur daripada satu senarai wujud dalam senarai yang lain adalah penting untuk pelbagai tugas manipulasi data. Artikel ini meneroka kaedah yang berbeza untuk menguji pertindihan ini, menilai kecekapannya dan menyediakan amalan terbaik.
1. Ungkapan Penjana
<code class="python">any(i in a for i in b)</code>
Kaedah ini berulang melalui satu senarai dan menyemak keahlian dalam senarai yang lain, mengembalikan Benar jika padanan ditemui. Kerumitan masanya ialah O(n), dengan n ialah panjang senarai yang lebih besar.
2. Set Intersection
<code class="python">bool(set(a) & set(b))</code>
Pendekatan ini menukarkan kedua-dua senarai kepada set dan mencari persilangannya. Jika persimpangan tidak kosong, ia mengembalikan True. Kerumitan masa terburuk untuk ini ialah O(n m), dengan n dan m ialah panjang senarai.
3. Persimpangan Set Hibrid
<code class="python">a = set(a) any(i in a for i in b)</code>
Kaedah ini menukarkan hanya satu senarai kepada set dan berulang melalui satu lagi, menyemak keahlian set. Ia mengelakkan penciptaan set perantara, menjadikannya lebih pantas daripada persimpangan set tradisional.
4. Kaedah Isdisjoint
<code class="python">not set(a).isdisjoint(b)</code>
Pendekatan ini menggunakan kaedah isdisjoint set beku untuk menentukan sama ada set tersebut mempunyai sebarang elemen sepunya. Jika mereka tidak berbuat demikian, hasilnya adalah Palsu; jika tidak, ia adalah Benar.
Kes Terburuk:
Dalam kebanyakan kes, isdisjoint kaedah adalah yang paling pantas kerana ia mendapat manfaat daripada semakan keahlian set masa tetap.
Kes Terbaik untuk Ungkapan Penjana:
Faktor yang Perlu Dipertimbangkan:
Atas ialah kandungan terperinci Bagaimanakah Saya Semak jika Elemen dari Satu Senarai Bertindih dengan Yang Lain dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!