Fünf nützliche Python-Datentypen, die leicht zu vergessen sind

Die Standardbibliothek von Python ist sehr leistungsfähig, aber es gibt zu viele Bibliotheken, um sie zu erfassen, und es gibt viele Leute, die sie kennen, aber ihre Existenz vergessen und das Rad neu erfinden. Zumindest bin ich einer dieser Leute, daher werde ich einige Datentypen in der Standard-Python-Bibliothek vorstellen, die nützlich sind, aber nur verwendet werden, wenn Sie sich dessen bewusst sind, als Memo für sich.

DefaultDict Offizielles Dokument: https://docs.python.jp/3/library/collections.html#collections.defaultdict

Wörtlich ein Wörterbuchtyp, mit dem Sie Standardwerte festlegen können. Das Schöne daran ist, dass Sie nicht jeden Schlüssel überprüfen müssen, um festzustellen, ob er im Wörterbuch enthalten ist. Wenn Sie beispielsweise die Anzahl der Vorkommen eines Wortes zählen, kann es in der folgenden Form verwendet werden:

>>> from collections import defaultdict
>>> d = defaultdict(int)
>>> string = "python is way way way way better than java"
>>> for w in string.split(" "):
...     d[w] += 1
...
>>> d.items()
dict_items([('better', 1), ('than', 1), ('python', 1), ('java', 1), ('way', 4), ('is', 1)])

Übrigens ist es auf den ersten Blick schwer zu verstehen, aber der defaultdict-Konstruktor verwendet eine Funktion, die einen Wert (genauer gesagt ein aufrufbares Objekt) als Argument generiert, keinen Standardwert. Wenn Sie also Folgendes tun, wird eine Fehlermeldung angezeigt.

>>> from collections import defaultdict
>>> d = defaultdict(0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: first argument must be callable or None

Korrekt,

>>> d = defaultdict(lambda: 0)

Oder

>>> d = defaultdict(int)

(Alles, was beim Aufruf 0 zurückgibt).

Counter Offizielles Dokument: https://docs.python.jp/3/library/collections.html#collections.Counter

Wenn Sie nur die Wörter zählen möchten, ist die Counter-Klasse äußerst praktisch. Wenn Sie eine Liste übergeben, wird die Anzahl der Elemente gezählt, und wenn Sie eine Zeichenfolge übergeben, wird die Anzahl der Zeichen für jedes Element / Zeichen gezählt.

>>> from collections import Counter
>>> c = Counter("python is way way way way better than C".split(" ")
>>> c
Counter({'way': 3, 'is': 1, 'better': 1, 'python': 1, 'C': 1, 'than': 1})
>>> c.most_common(1)
[('way', 3)]

Es ist ein Prozess, den Sie möglicherweise selbst implementieren, aber da es einen so praktischen Datentyp gibt, verwenden wir ihn. Wie Sie sehen können, ist es einfach, die häufigsten Werte und die am häufigsten vorkommenden n Elemente zu erhalten. Sie können auch Zähler addieren oder subtrahieren, sodass Zähler auch nützlich sind, wenn Sie Sätze vergleichen möchten.

deque Offizielles Dokument: https://docs.python.jp/3/library/collections.html#collections.deque

Da der integrierte Listentyp in Python bereits über eine Pop-Methode verfügt, kann diese leicht übersehen werden. Sie können jedoch ** Elemente mit ** O (1) vom Anfang bis zum Ende extrahieren und löschen. Es gibt einen Datentyp namens deque. Der Listentyp ist übrigens eine O (n) -Operation, da das Löschen von Daten von Anfang an das Verschieben von Elementen verursacht. Außerdem verwendet deque zum Zeitpunkt der Initialisierung einen Parameter namens maxlen. Wenn Sie in diesem Fall versuchen, ein Element hinzuzufügen, das größer als maxlen ist, wird dieser automatisch aus dem ersten Element gelöscht. Die Szene, in der Deque ins Spiel kommt, ist, wenn Sie eine Datenstruktur benötigen, deren Länge sich dynamisch und aus beiden Richtungen ändert. Zum Beispiel, wenn Sie einen Verlauf fester Länge verwalten möchten.

>>> from collections import deque
>>> history = deque(maxlen=100)
>>> lines = open("python.txt")
>>> for line in lines:
...     if 'python' in line:
...         print(lines)
...     history.append(line)

Noch besser ist, dass Deque ** fadensicher ** ist. Es kann auch als Mittel zum Datenaustausch in Systemen verwendet werden, in denen sich Hersteller und Verbraucher in mehreren separaten Threads befinden.

PriorityQueue Offizielles Dokument: https://docs.python.jp/3/library/queue.html#queue.PriorityQueue

Ich wusste es bis vor kurzem nicht, aber Python implementiert Priority Queue in der Standardbibliothek. Ich habe es zuvor mit heapq implementiert, aber das mussten Sie nicht tun. PriorityQueue ist nützlich bei der Implementierung von Suchalgorithmen. Die Suche mit Breitenpriorität, die Suche mit Tiefenpriorität und die A * -Suche können auch als derselbe Algorithmus mit unterschiedlicher Priorität von PriorityQueue angesehen werden. Die Priority Queue ist übrigens auch threadsicher.

OrderedDict Offizielles Dokument: https://docs.python.jp/3/library/collections.html#collections.OrderedDict

Python-Wörterbuchelemente sind grundsätzlich nicht in Ordnung. Daher ist bei dynamischer Verwendung von Elementen die Reihenfolge, in der sie zurückgegeben werden, wenn nacheinander auf die Elemente des Wörterbuchs zugegriffen wird, unbestimmt. Darüber hinaus kann der Versuch, die Elemente eines Wörterbuchs zu sortieren, mühsam sein (oder besser gesagt, das Wörterbuch selbst kann nicht sortiert werden). OrderedDict macht es einfach, diese Dinge zu tun. Stellen Sie sich beispielsweise eine Situation vor, in der Sie Testergebnisse in einem Wörterbuch verwalten und die Ergebnisse in verschiedenen Reihenfolgen anzeigen:

>>> from collections import OrderedDict
>>> d = OrderedDict({"Suzuki": 100, "Tanaka": 30, "Sato": 50})
>>> sorted(d.items(), key=lambda x: x[1])
[('Tanaka', 30), ('Sato', 50), ('Suzuki', 100)]
>>> sorted(d.items(), key=lambda x: x[0])
[('Sato', 50), ('Suzuki', 100), ('Tanaka', 30)]

Wie im obigen Beispiel ist es einfach, nach Punktzahl oder Namen zu sortieren.

Zusammenfassung

Dieses Mal habe ich mich auf fünf Datentypen konzentriert, die ich besonders nützlich finde, aber Python verfügt über eine Reihe nützlicher Standardbibliotheken, die ich zum Lesen empfehle (ich bin noch neu). Sie können das entdecken).

Recommended Posts

Fünf nützliche Python-Datentypen, die leicht zu vergessen sind
Python-Listeneinschlussnotation, die leicht zu vergessen ist
Reguläre Ausdrücke, die in Python leicht und solide zu erlernen sind
10 Python-Fehler, die Anfängern häufig sind
Der Aufzählungstyp, der aus Python 3.4 in die Standardbibliothek eingeht, ist weiterhin praktisch
Python-E-Book-Zusammenfassung nützlich für die frei lesbare Datenanalyse
Syntax, die Perl-Benutzer in Python häufig vergessen
Punkte, bei denen bei der Verwendung von Lambda während der Python-Schleifenverarbeitung leicht Fehler auftreten können
[Python] Es kann nützlich sein, die Datenrahmen aufzulisten
Python-Fehlermeldungen sind spezifisch und leicht zu verstehen "ga" (davor Doppelpunkt (:) und Semikolon (;))
Python-Notizen, die Sie bald vergessen sollten
[Python] Einfache Möglichkeit, Energiedaten interaktiv zu visualisieren [plotly.express]
Ein Python-Skript, das Oracle-Datenbankdaten in CSV konvertiert
Die Datenvisualisierungsbibliothek "folium" von Python ist sehr einfach zu bedienen
Links zu Personen, die gerade mit der Datenanalyse mit Python beginnen
[Python] Wie man MP3-Daten fFT
Einfach zu bedienendes Jupyter-Notebook (Python3.5)
Nützlich zu merken! 10 Python-Standardbibliotheken
Visualisieren Sie Ihre Daten ganz einfach mit Python Seaborn.
Einfaches Erlernen von Python beim Schreiben
[Python Tutorial] Eine einfache Einführung in Python
[Python] Extrahiere △△ mit maximalem ○○ mit Pandas
[Einführung in Python3, Tag 17] Kapitel 8 Datenziele (8.1-8.2.5)
[Einführung in Python3, Tag 17] Kapitel 8 Datenziele (8.3-8.3.6.1)
Konvertieren Sie Excel-Daten mit Python in JSON
Python 3.9 Dict Merge (`|`) scheint nützlich zu sein
[Einführung in Python3 Tag 19] Kapitel 8 Datenziele (8.4-8.5)
Einfache Möglichkeit, Wikipedia mit Python zu verwenden
[Einführung in Python3 Tag 18] Kapitel 8 Datenziele (8.3.6.2 bis 8.3.6.3)
Empfohlene Bücher von 3 Typen im Zusammenhang mit Python
Konvertieren Sie den Python-Datumstyp in das RFC822-Format
Verwendung von "deque" für Python-Daten
Komprimieren Sie Python-Daten und schreiben Sie in SQLite
[Hinweis] Begriffe, die schwer zu merken sind
[Einführung in Data Scientist] Grundlagen von Python ♬
[Python] Lösung für das Problem, dass Elemente beim Kopieren einer Liste verknüpft werden
Python-Fehlermeldungen sind spezifisch und leicht zu verstehen "ga" (... AAA yyy BBB)