Heim >Backend-Entwicklung >Python-Tutorial >Wie können wir überlappende Teilstringvorkommen in Python effizient zählen?

Wie können wir überlappende Teilstringvorkommen in Python effizient zählen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-15 11:27:16415Durchsuche

How Can We Efficiently Count Overlapping Substring Occurrences in Python?

Überlappende String-Vorkommen effektiv zählen

Die Anzahl der Vorkommen eines Teilstrings innerhalb eines Strings zu ermitteln, kann schwierig sein, insbesondere wenn Überlappungen zulässig sind. Bibliotheken wie Pythons String bieten zu diesem Zweck integrierte Methoden wie „count“, berücksichtigen jedoch keine überlappenden Instanzen.

Zählung überlappender Zeichen

Betrachten Sie den folgenden Ansatz :

def overlapping_count(string, substring):
    count = 0
    for i in range(len(string) - len(substring) + 1):
        if string[i:i+len(substring)] == substring:
            count += 1
    return count

Hier iteriert die Funktion durch die Zeichenfolge und untersucht Teilzeichenfolgen der angegebenen Länge und Erhöhen der Anzahl, wenn eine Übereinstimmung gefunden wird. Diese Methode ist unkompliziert, kann aber bei großen Strings relativ langsam sein.

Eine mögliche Optimierung

Aus Leistungsgründen lohnt es sich, einen anderen Ansatz zu erkunden, bei dem die Fähigkeiten von Cython genutzt werden:

import cython

@cython.boundscheck(False)
def faster_occurrences(string, substring):
    cdef int count = 0
    cdef int start = 0
    while True:
        start = string.find(substring, start) + 1
        if start > 0:
            count += 1
        else:
            return count

Mit Cython können wir die Vorteile statischer Typdeklarationen und Just-In-Time (JIT)-Kompilierung nutzen, um die Leistung zu verbessern indem unnötige Typprüfungen und Optimierungen für Python-Code übersprungen werden. Diese optimierte Funktion sollte bei größeren Datensätzen deutlich schneller sein.

Das obige ist der detaillierte Inhalt vonWie können wir überlappende Teilstringvorkommen in Python effizient zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn