Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Semak jika Elemen dari Satu Senarai Bertindih dengan Yang Lain dalam Python?

Bagaimanakah Saya Semak jika Elemen dari Satu Senarai Bertindih dengan Yang Lain dalam Python?

Susan Sarandon
Susan Sarandonasal
2024-10-20 08:05:29123semak imbas

How Do I Check if Elements from One List Overlap with Another in Python?

Senarai Pengujian Bertindih dalam Python

Pengenalan

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.

Pendekatan

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.

Perbandingan Kecekapan

Kes Terburuk:

  • Ungkapan penjana: O(n)
  • Set persilangan: O(n m)
  • Persilangan set hibrid: O(n m)
  • Kaedah isdisjoint: O(1)

Dalam kebanyakan kes, isdisjoint kaedah adalah yang paling pantas kerana ia mendapat manfaat daripada semakan keahlian set masa tetap.

Kes Terbaik untuk Ungkapan Penjana:

  • Apabila beberapa elemen pertama senarai bertindih. Dalam kes ini, ungkapan penjana boleh kembali Benar dengan cepat.

Faktor yang Perlu Dipertimbangkan:

  • Saiz senarai
  • Taburan elemen dalam senarai
  • Kekerapan elemen dikongsi

Amalan Terbaik

  • Untuk senarai kecil (< 10 elemen), gunakan kaedah isdisjoint.
  • Jika struktur senarai boleh diramal (mis., diisih), ungkapan penjana mungkin lebih pantas.
  • Apabila terdapat perbezaan saiz yang ketara antara senarai, gunakan kaedah isdisjoint dengan senarai yang lebih kecil sebagai hujah pertama.
  • Untuk senarai dengan sedikit atau tiada elemen dikongsi, kaedah isdisjoint secara amnya lebih cekap.

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!

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