Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh mencari Kejadian ke-n bagi Subrentetan dalam Python?

Bagaimanakah saya boleh mencari Kejadian ke-n bagi Subrentetan dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-10-20 07:23:29557semak imbas

How Can I Find the nth Occurrence of a Substring in Python?

Mencari Kejadian ke-n Subrentetan dalam Python dengan Cekap

Mencari indeks kejadian ke-n subrentetan dalam Python menimbulkan tugas yang nampaknya mudah untuk peminat pengekodan . Untuk mencapai matlamat ini dengan cara yang paling Pythonic, mari kita terokai pelbagai pendekatan.

Kaedah Iteratif untuk Kejadian Tidak Bertindih

Satu pendekatan yang mudah dan cekap ialah mencari kejadian secara berulang sehingga yang ke-n ditemui:

<code class="python">def find_nth(haystack, needle, n):
    start = haystack.find(needle)
    while start >= 0 and n > 1:
        start = haystack.find(needle, start + len(needle))
        n -= 1
    return start</code>

Fungsi ini berulang melalui timbunan jerami dan menambah indeks permulaan mengikut panjang jarum sehingga kejadian ke-n ditemui.

Berulang Kaedah untuk Kejadian Bertindih

Jika kejadian bertindih perlu dipertimbangkan, pendekatan berulang boleh diubah suai:

<code class="python">def find_nth_overlapping(haystack, needle, n):
    start = haystack.find(needle)
    while start >= 0 and n > 1:
        start = haystack.find(needle, start + 1)
        n -= 1
    return start</code>

Fungsi ini menambah indeks permulaan sebanyak 1 dan bukannya panjang jarum , membolehkannya mencari kejadian bertindih.

Kedua-dua kaedah mematuhi prinsip kesederhanaan, kerataan dan kebolehbacaan Python, menjadikannya sesuai untuk penyelesaian Pythonic untuk masalah ini.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mencari Kejadian ke-n bagi Subrentetan 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