Heim  >  Artikel  >  Backend-Entwicklung  >  Wie können Sie die Präsenz von Unterlisten innerhalb einer größeren Liste in Python effizient bestimmen?

Wie können Sie die Präsenz von Unterlisten innerhalb einer größeren Liste in Python effizient bestimmen?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-26 22:33:31391Durchsuche

How Can You Efficiently Determine Sublist Presence Within a Larger List in Python?

Suchen von Listen nach dem Vorhandensein von Unterlisten in Python

Das Identifizieren des Vorhandenseins einer Unterliste innerhalb einer größeren Liste ist eine häufige Programmieraufgabe. Python bietet eine einfache Lösung für dieses Problem mithilfe einer benutzerdefinierten Funktion.

Problemformulierung:

Bestimmen Sie anhand zweier Listen, Liste1 und Liste2, ob die Elemente von Liste2 als vorhanden sind eine zusammenhängende Sequenz innerhalb von list1. Betrachten Sie die folgenden Testfälle:

<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>

Implementierung:

Pythons funktionale Programmierfunktionen ermöglichen eine prägnante Lösung mithilfe der Funktion „any()“ und Listenverständnissen:

<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>

Diese Funktion benötigt zwei Argumente: lst (die Hauptliste) und sublst (die Unterliste, nach der gesucht werden soll). Es berechnet die Länge von sublst und generiert mithilfe eines Listenverständnisses eine Folge von Indexbereichen innerhalb von lst. Für jeden Bereich wird sublst mit den entsprechenden Elementen in lst verglichen. Wenn eine Übereinstimmung gefunden wird, gibt any() True zurück; andernfalls wird False zurückgegeben.

Beispielverwendung:

In den bereitgestellten Testfällen gibt sublistExists(list1, [1,1,1]) True zurück und sublistExists( list2, [1,1,1]) gibt wie erwartet False zurück.

Hinweis:

Die Funktion „any()“ optimiert die Suche, indem sie bei der ersten Übereinstimmung beendet wird . Die Funktion hat eine Zeitkomplexität von O(m*n), wobei m die Länge von lst und n die Länge von sublst ist.

Das obige ist der detaillierte Inhalt vonWie können Sie die Präsenz von Unterlisten innerhalb einer größeren Liste in Python effizient bestimmen?. 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