Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Anda Boleh Menentukan Kehadiran Subsenarai Dengan Cekap Dalam Senarai Lebih Besar dalam Python?
Mencari Senarai untuk Kehadiran Subsenarai dalam Python
Mengenal pasti kehadiran subsenarai dalam senarai yang lebih besar ialah tugas pengaturcaraan biasa. Python menawarkan penyelesaian mudah untuk masalah ini menggunakan fungsi tersuai.
Perumusan Masalah:
Memandangkan dua senarai, list1 dan list2, tentukan sama ada elemen list2 wujud sebagai urutan bersebelahan dalam senarai1. Pertimbangkan kes ujian berikut:
<code class="python">list1 = [1,0,1,1,1,0,0] list2 = [1,0,1,0,1,0,1] # Should return True sublistExists(list1, [1,1,1]) # Should return False sublistExists(list2, [1,1,1])</code>
Pelaksanaan:
Keupayaan pengaturcaraan fungsian Python membolehkan penyelesaian ringkas menggunakan fungsi any() dan pemahaman senarai:
<code class="python">def contains_sublist(lst, sublst): n = len(sublst) return any((sublst == lst[i:i+n]) for i in range(len(lst)-n+1))</code>
Fungsi ini mengambil dua hujah: lst (senarai utama) dan sublst (subsenarai untuk dicari). Ia mengira panjang sublst dan menggunakan pemahaman senarai untuk menjana jujukan julat indeks dalam lst. Untuk setiap julat, ia membandingkan sublst dengan elemen yang sepadan dalam lst. Jika padanan ditemui, any() mengembalikan True; jika tidak, ia mengembalikan Palsu.
Contoh Penggunaan:
Dalam kes ujian yang disediakan, sublistExists(list1, [1,1,1]) mengembalikan True dan sublistExists( list2, [1,1,1]) mengembalikan False, seperti yang dijangkakan.
Nota:
Fungsi any() mengoptimumkan carian dengan menamatkan pada perlawanan pertama . Fungsi ini mempunyai kerumitan masa O(m*n), dengan m ialah panjang lst dan n ialah panjang sublst.
Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Menentukan Kehadiran Subsenarai Dengan Cekap Dalam Senarai Lebih Besar dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!