Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Beschreibung des integrierten Moduls „Collections“ von Python

Detaillierte Beschreibung des integrierten Moduls „Collections“ von Python

高洛峰
高洛峰Original
2017-03-15 14:33:451146Durchsuche

ccollections ist ein integriertes Modul von Python. Der Quellcode befindet sich in Lib/collections/init.py. Dieses Modul stellt einen universellen Datencontainer bereit.

Deque-ContainerObjekt

wird durch den Import von Deques aus Sammlungen eingeführt. Beim Erstellen eines Deque-Containerobjekts können Sie den Parameter auf ein iterierbares Objekt (z. B. Tupel, list, str) oder maxlen=x (int-Typ) oder None für die Initialisierung.

Deque-Container unterstützt ThreadSicherheit Beim Einfügen oder Entfernen von Elementen an beiden Enden von Deque über append oder pop beträgt die Zeitkomplexität O(1). Im Vergleich zum Listenobjekt verfügt die Liste auch über dieselbe api, um dieselbe Funktion zu implementieren, aber für Operationen auf der Liste wie pop(0) oder insert(0, x) beträgt die Zeitkomplexität O (N) .

Wenn maxlen nicht deklariert ist oder maxlen=None beim Initialisieren von Deque deklariert ist, kann der Deque-Container eine beliebige Anzahl von Elementen enthalten. Andernfalls wird der Deque-Container als Elementcontainer mit begrenzter Länge definiert.

Sobald die Anzahl der Elemente im Container den festgelegten maxlen erreicht, wird beim Hinzufügen neuer Elemente die gleiche Anzahl von Elementen vom anderen Ende des hinzugefügten Elements ausgeschlossen, wodurch sichergestellt wird, dass die Elemente im aktuellen deque Alle sind neu hinzugefügte Elemente.

Deque-ObjektFunktion

append(x)

appendleft(x)

clear()

copy()

count(x): Gibt die Anzahl der Elemente mit dem Wert x im Container zurück

extend(iterable)

extendleft(iterable)

index(x): Finden Sie den ersten Wert von x im Containerelement index , wenn er nicht existiert, lösen Sie eine ValueError-Ausnahme aus

insert(idx, x)

pop()

popleft()

remove(x)

reverse(): Elemente im Container umdrehen und None

rotate(n)

deque object read-only -Attribut zurückgeben

maxlen

Da das Deque-Objekt zusätzlich zu den oben genannten Objektfunktionen auch ein iterierbares Objekt ist, gilt len(deque);reversed(deque);copy.copy(deque );copy. Ebenso funktioniert der in -Operator beim Durchlaufen der Deque-Operation. Die Slicing-Operation deque[-1] kann auch das letzte Element in der Container. Wenn Sie mit zufälligen Elementen im Container arbeiten, wird die Verwendung einer Liste empfohlen.

demo

Rufen Sie den Zeileninhalt der Python--Zeichenfolge in der Datei und die ersten drei Zeilen dieser Zeile

from collections import deque


def search(lines, pattern, maxlen):
    pre_lines = deque(maxlen=maxlen)
    for line in lines:
        if pattern in line:
            yield line, pre_lines
        pre_lines.append(line)


if name == 'main':
    with(open('./test.txt')) as f:
        for line, pre_lines in search(f, 'python', 3):
            for pre_line in pre_lines:
                print(pre_line, end='')
            print(line)

als Eingabetext ab Der Dateiinhalt ist

c#
c
c++
javascript
python
java
delphi
python
golang
perl
css
html
python

und die Ausgabe durch den Code ist

c
c++
javascript
python

python
java
delphi
python

perl
css
html
python


Das obige ist der detaillierte Inhalt vonDetaillierte Beschreibung des integrierten Moduls „Collections“ von Python. 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