Python One-Liners: Profi-Programmierung durch kurz gefasstes Python
Von Christian Mayer und Kathrin Lichtenberg
()
Über dieses E-Book
Python Tipps und Tricks mit fortgeschrittenem Niveau
Problemlösungen für den Programmieralltag
NumPy-Grundlagen
Python One-Liners zeigt Ihnen, wie man "One Liners", Einzeiler, liest und schreibt: prägnante Ausdrücke zu nützlicher Funktionalität, verpackt in einer einzigen Codezeile. Sie lernen systematisch jede Zeile von Python-Code zu entschlüsseln und zu verstehen, und werden wie ein Experte eloquentes, stark komprimiertes Python schreiben.
In den fünf Kapiteln des Buches werden Tipps und Tricks, reguläre Ausdrücke, Machine Learning, Kernthemen der Datenwissenschaft und hilfreiche Algorithmen behandelt. Die ausführlichen Erläuterungen von Einzeilern führen in wichtige Konzepte der Informatik ein und fördern Ihre Programmier- und Analysefähigkeiten.
Sie lernen fortgeschrittene Python-Funktionen wie Listenverständnis, Slicing, Lambda-Funktionen, reguläre Ausdrücke, Map- und Reduce-Funktionen und Slice-Zuweisungen kennen.
Sie erwerben darüber hinaus Kenntnisse in diesen Bereichen:
- Nutzung von Datenstrukturen zur Lösung von Problemen aus der realen Welt, wie z. B. die Verwendung boolescher Indizierung zum Auffinden von Städten mit überdurchschnittlicher Umweltverschmutzung.
- Verwendung der NumPy-Grundlagen wie Array, Form, Achse, Typ, Broadcasting, fortgeschrittene Indizierung, Slicing, Sortierung, Suche, Aggregation und Statistik.
- Berechnen Sie grundlegende Statistiken von mehrdimensionalen Datenfeldern und die K-Means-Algorithmen für unsupervised Learning.
- Erstellen Sie fortgeschrittenere reguläre Ausdrücke unter Verwendung von Gruppierungs- und benannten Gruppen, negativen Lookaheads, maskierten Zeichen, Leerzeichen, Zeichensätzen (und negativen Zeichensätzen) und greedy/non greedy Operatoren.
- Ein breites Spektrum von Informatik-Themen verstehen, einschließlich Anagramme, Palindrome, Obermengen, Permutationen, Fakultäten, Primzahlen, Fibonacci-Zahlen, Obfuszierung, Suche und algorithmische Sortierung.
Am Ende des Buches werden Sie wissen, wie man Python in seiner raffiniertesten Form schreibt und prägnante, schöne Python-Kunstwerke in nur einer einzigen Zeile schafft.
Mehr von Christian Mayer lesen
Aufsatzsammlung zum MittelPunkt Die Grenzen meines Denkens sind die Grenzen meiner Welt: Wie wir vorhandene Potenziale für einen gesellschaftlichen Wandel mobilisieren können Bewertung: 0 von 5 Sternen0 BewertungenRettet die Wirtschaft … vor sich selbst!: Faszinierende Reise ans Ende des neoklassischen Universums Bewertung: 0 von 5 Sternen0 Bewertungen
Ähnlich wie Python One-Liners
Ähnliche E-Books
Python programmieren lernen: Der spielerische Einstieg mit Minecraft Bewertung: 0 von 5 Sternen0 BewertungenPyTorch kompakt: Syntax, Design Patterns und Codebeispiele für Deep-Learning-Modelle Bewertung: 0 von 5 Sternen0 BewertungenRoutineaufgaben mit Python automatisieren: Praktische Programmierlösungen für Einsteiger Bewertung: 0 von 5 Sternen0 BewertungenNatural Language Processing mit PyTorch: Intelligente Sprachanwendungen mit Deep Learning erstellen Bewertung: 0 von 5 Sternen0 BewertungenMachine Learning – Die Referenz: Mit strukturierten Daten in Python arbeiten Bewertung: 0 von 5 Sternen0 BewertungenEinführung in Machine Learning mit Python: Praxiswissen Data Science Bewertung: 0 von 5 Sternen0 BewertungenEinführung in TensorFlow: Deep-Learning-Systeme programmieren, trainieren, skalieren und deployen Bewertung: 0 von 5 Sternen0 BewertungenHitchhiker's Guide für Python: Best Practices für Programmierer Bewertung: 0 von 5 Sternen0 BewertungenPython-Tricks: Praktische Tipps für Fortgeschrittene Bewertung: 3 von 5 Sternen3/5Deep Learning – Grundlagen und Implementierung: Neuronale Netze mit Python und PyTorch programmieren Bewertung: 0 von 5 Sternen0 BewertungenProgrammieren in TypeScript: Skalierbare JavaScript-Applikationen entwickeln Bewertung: 0 von 5 Sternen0 BewertungenPyTorch für Deep Learning: Anwendungen für Bild-, Ton- und Textdaten entwickeln und deployen Bewertung: 0 von 5 Sternen0 BewertungenGANs mit PyTorch selbst programmieren: Ein verständlicher Einstieg in Generative Adversarial Networks Bewertung: 0 von 5 Sternen0 BewertungenProgrammieren lernen von Kopf bis Fuß: Ihr Einstieg in die Programmierung mit Python Bewertung: 0 von 5 Sternen0 BewertungenMehr Hacking mit Python: Eigene Tools entwickeln für Hacker und Pentester Bewertung: 0 von 5 Sternen0 BewertungenMachine Learning Kochbuch: Praktische Lösungen mit Python: von der Vorverarbeitung der Daten bis zum Deep Learning Bewertung: 0 von 5 Sternen0 BewertungenMachine Learning – kurz & gut: Eine Einführung mit Python, Pandas und Scikit-Learn Bewertung: 5 von 5 Sternen5/5Einführung in Data Science: Grundprinzipien der Datenanalyse mit Python Bewertung: 0 von 5 Sternen0 BewertungenDatenintensive Anwendungen designen: Konzepte für zuverlässige, skalierbare und wartbare Systeme Bewertung: 0 von 5 Sternen0 BewertungenMachine Learning für Softwareentwickler: Von der Python-Codezeile zur Deep-Learning-Anwendung Bewertung: 0 von 5 Sternen0 BewertungenThink Python: Systematisch programmieren lernen mit Python Bewertung: 0 von 5 Sternen0 BewertungenVerteilte Systeme mit Kubernetes entwerfen: Patterns und Prinzipien für skalierbare und zuverlässige Services Bewertung: 0 von 5 Sternen0 BewertungenPrinzipien des Softwaredesigns: Entwurfsstrategien für komplexe Systeme Bewertung: 0 von 5 Sternen0 BewertungenPython für Excel: Eine moderne Umgebung für Automatisierung und Datenanalyse Bewertung: 0 von 5 Sternen0 BewertungenPython | Schritt für Schritt Programmieren lernen: Der ultimative Anfänger Guide für einen einfachen & schnellen Einstieg Bewertung: 0 von 5 Sternen0 BewertungenMerkmalskonstruktion für Machine Learning: Prinzipien und Techniken der Datenaufbereitung Bewertung: 0 von 5 Sternen0 BewertungenGraphQL: Eine Einführung in APIs mit GraphQL Bewertung: 0 von 5 Sternen0 BewertungenProgrammierung in Python: Ein kompakter Einstieg für die Praxis Bewertung: 0 von 5 Sternen0 BewertungenWeniger schlecht über IT schreiben: Die Schreibwerkstatt für IT-Erklärer Bewertung: 0 von 5 Sternen0 BewertungenPraxiseinstieg Deep Learning: Mit Python, Caffe, TensorFlow und Spark eigene Deep-Learning-Anwendungen erstellen Bewertung: 0 von 5 Sternen0 Bewertungen
Programmieren für Sie
Hacken mit Python und Kali-Linux: Entwicklung eigener Hackingtools mit Python unter Kali-Linux Bewertung: 0 von 5 Sternen0 BewertungenJavaScript kurz & gut Bewertung: 3 von 5 Sternen3/5PowerShell: Anwendung und effektive Nutzung Bewertung: 5 von 5 Sternen5/5Algorithmen: Grundlagen und Implementierung Bewertung: 0 von 5 Sternen0 BewertungenWeniger schlecht programmieren Bewertung: 4 von 5 Sternen4/5Python kurz & gut: Für Python 3.x und 2.7 Bewertung: 3 von 5 Sternen3/5C++: Eine kompakte Einführung Bewertung: 0 von 5 Sternen0 BewertungenEigene Spiele programmieren – Python lernen: Der spielerische Weg zur Programmiersprache Bewertung: 0 von 5 Sternen0 BewertungenLinux Grundlagen - Ein Einstieg in das Linux-Betriebssystem Bewertung: 0 von 5 Sternen0 BewertungenMikrocontroller in der Elektronik: Mikrocontroller programmieren und in der Praxis einsetzen Bewertung: 0 von 5 Sternen0 BewertungenProgrammieren lernen mit Python 3: Schnelleinstieg für Beginner Bewertung: 0 von 5 Sternen0 BewertungenGames | Game Design | Game Studies: Eine Einführung (Deutschsprachige Ausgabe) Bewertung: 0 von 5 Sternen0 BewertungenGit kurz & gut Bewertung: 0 von 5 Sternen0 BewertungenProgrammieren für Einsteiger: Teil 1 Bewertung: 0 von 5 Sternen0 Bewertungen.NET-Praxis: Tipps und Tricks zu .NET und Visual Studio Bewertung: 0 von 5 Sternen0 BewertungenMicrosoft Word 2016 (Microsoft Press): Einfache Anleitungen für wichtige Aufgaben Bewertung: 0 von 5 Sternen0 BewertungenAndroid-Entwicklung für Einsteiger - 20.000 Zeilen unter dem Meer: 2. erweiterte Auflage Bewertung: 0 von 5 Sternen0 BewertungenDas große Python3 Workbook: Mit vielen Beispielen und Übungen - Programmieren leicht gemacht! Bewertung: 4 von 5 Sternen4/5HTML5-Programmierung von Kopf bis Fuß: Webanwendungen mit HTML5 und JavaScript Bewertung: 0 von 5 Sternen0 BewertungenRaspberry Pi: Mach's einfach: Die kompakteste Gebrauchsanweisung mit 222 Anleitungen. Geeignet für Raspberry Pi 3 Modell B / B+ Bewertung: 0 von 5 Sternen0 BewertungenRichtig einsteigen: Excel VBA-Programmierung: Für Microsoft Excel 2007 bis 2016 Bewertung: 0 von 5 Sternen0 BewertungenPython-Grundlagen Bewertung: 0 von 5 Sternen0 BewertungenPython | Schritt für Schritt Programmieren lernen: Der ultimative Anfänger Guide für einen einfachen & schnellen Einstieg Bewertung: 0 von 5 Sternen0 BewertungenLinux Befehlsreferenz: Schnelleinstieg in die Arbeit mit der Konsole, regulären Ausdrücken und Shellscripting Bewertung: 0 von 5 Sternen0 BewertungenPraktisches Programmieren in C: Grundlagen und Tipps Bewertung: 0 von 5 Sternen0 BewertungenSQL – kurz & gut Bewertung: 0 von 5 Sternen0 BewertungenRaspberry Pi: Einstieg • Optimierung • Projekte Bewertung: 5 von 5 Sternen5/5Vue.js für alle: Wissenswertes für Einsteiger und Experten Bewertung: 0 von 5 Sternen0 BewertungenPython kinderleicht!: Einfach programmieren lernen – nicht nur für Kids Bewertung: 0 von 5 Sternen0 BewertungenEinstieg in TypeScript: Grundlagen für Entwickler Bewertung: 0 von 5 Sternen0 Bewertungen
Rezensionen für Python One-Liners
0 Bewertungen0 Rezensionen
Buchvorschau
Python One-Liners - Christian Mayer
1
Python-Auffrischungskurs
Zweck dieses Kapitels ist es, Ihre Kenntnisse der grundlegenden Python-Datenstrukturen, -Schlüsselwörter, Kontrollflussoperationen usw. aufzufrischen. Ich habe dieses Buch für Python-Programmierer geschrieben, die bereits gewisse Fähigkeiten besitzen. Um zum Experten zu werden, müssen Sie natürlich die Grundlagen beherrschen.
Das Verständnis der Grundlagen erlaubt es Ihnen, einen Schritt zurückzutreten und das breitere Bild zu betrachten – eine wichtige Fähigkeit, ob Sie nun den Aufstieg bei Google schaffen, Informatikprofessorin werden oder einfach nur gut programmieren können wollen. Informatikprofessoren besitzen z. B. oft ein unglaublich tiefgreifendes Wissen der Grundlagen in ihrem Gebiet, das es ihnen ermöglicht, über Grundprinzipien zu diskutieren und Forschungslücken zu erkennen, statt sich von der allerneuesten Technologie blenden zu lassen. Dieses Kapitel präsentiert die wichtigsten Python-Grundlagen, die als Fundament für die höheren Themen in diesem Buch dienen.
Grundlegende Datenstrukturen
Ein gründliches Verständnis der Datenstrukturen ist eine der grundlegendsten Fähigkeiten, die Sie als Programmierer erwerben können. Diese Grundlagen werden Ihnen immer hilfreich sein, ob Sinee nun Machine-Learning-Projekte schaffen, an großen Codeprojekte arbeiten, Websites einrichten und verwalten oder Algorithmen schreiben.
Numerische Datentypen und -strukturen
Die wichtigsten numerischen Datentypen sind Integer und Float. Ein Integer ist eine positive oder negative Zahl ohne Gleitkomma (z. B. 3). Ein Float ist eine positive oder negative Zahl mit Gleitkommagenauigkeit (z. B. 3,14159265359). Python bietet eine große Vielzahl an eingebauten numerischen Operationen sowie die Funktionalität, um diese numerischen Datentypen ineinander umzuwandeln. Schauen Sie sich die Beispiele in Listing 1–1 genau an, um diese ungemein wichtigen numerischen Operationen zu meistern.
## Arithmetische Operationen
x, y = 3, 2
print(x + y) # = 5
print(x – y) # = 1
print(x * y) # = 6
print(x / y) # = 1.5
print(x // y) # = 1
print(x % y) # = 1
print(–x) # = –3
print(abs(–x)) # = 3
print(int(3.9)) # = 3
print(float(x)) # = 3.0
print(x ** y) # = 9
Listing 1–1Die numerischen Datentypen
Die meisten der Operatoren sind selbsterklärend. Beachten Sie, dass der Operator // eine Integer-Division durchführt. Das Ergebnis ist ein abgerundeter Integer-Wert (z. B. 3 // 2 == 1).
Boolesche Werte
Eine Variable vom Typ Boolean kann nur zwei Werte annehmen – False oder True.
In Python sind die Datentypen Boolean und Integer eng miteinander verwandt: Der Datentyp Boolean benutzt intern Integer-Werte (der boolesche Wert False wird durch den Integer-Wert 0 repräsentiert, der boolesche Wert True durch den Integer-Wert 1). Listing 1–2 zeigt ein Beispiel für diese beiden booleschen Schlüsselwörter.
x = 1 > 2
print(x)
# False
y = 2 > 1
print(y)
# True
Listing 1–2Die booleschen Werte False und True
Nach dem Auswerten der angegebenen Ausdrücke verweist die Variable x auf den booleschen Wert False, die Variable y dagegen auf den booleschen Wert True.
Sie können die booleschen Werte mit drei wichtigen Schlüsselwörtern verwenden, um in Python kompliziertere Ausdrücke zu erzeugen.
Schlüsselwörter: and, or, not
boolesche Ausdrücke stellen grundlegende logische Operatoren dar. Allein in Kombination mit den folgenden drei Schlüsselwörtern können Sie ein breites Spektrum an potenziell komplizierten Ausdrücken erzeugen:
andDer Ausdruck x and y wird zu True ausgewertet, falls der Wert x True ist und der Wert y ebenfalls True ist. Ist einer der Werte False, wird der Gesamtausdruck ebenfalls False.
orDer Ausdruck x or y wird zu True ausgewertet, falls der Wert x True ist oder der Wert y True ist (oder beide Werte True sind). Falls nur einer der Werte True ist, wird auch der Gesamtausdruck True.
notDer Ausdruck not x wird zu True ausgewertet, falls x False ist. Ansonsten wird der Ausdruck zu False ausgewertet.
Schauen Sie sich den folgenden Python-Code in Listing 1–3 an.
x, y = True, False
print((x or y) == True)
# True
print((x and y) == False)
# True
print((not y) == True)
# True
Listing 1–3Die Schlüsselwörter and, or und not
Mithilfe dieser drei Schlüsselwörter können Sie alle logischen Ausdrücke formulieren, die Sie jemals brauchen werden.
Die Rangordnung der booleschen Operatoren
Um die boolesche Logik wirklich zu verstehen, muss man die Reihenfolge beachten, in der die booleschen Operatoren angewandt werden. Nehmen Sie z. B. die natürlichsprachige Aussage »es regnet und es ist kalt oder windig«. Wir können sie auf zweierlei Weise interpretieren:
»(es regnet und es ist kalt) oder windig«In diesem Fall wäre die Aussage True, falls es windig ist – selbst wenn es nicht regnet.
und »es regnet und (es ist kalt oder windig)«In diesem Fall dagegen wäre die Aussage False, falls es nicht regnet – selbst wenn es kalt oder windig ist.
Die Reihenfolge der booleschen Operatoren ist wichtig. Die erste Interpretation dieser Aussage wäre korrekt, weil der and-Operator Vorrang vor dem or-Operator hat. Schauen wir uns den Codeausschnitt in Listing 1–4 an.
## 1. Boolesche Operationen
x, y = True, False
print(x and not y)
# True
print(not x and y or x)
# True
## 2. If-Bedingung wird zu False ausgewertet
if None or 0 or 0.0 or '' or [] or {} or set():
print(Dead Code
) # Wird nicht erreicht
Listing 1–4Der boolesche Datentyp
Dieser Code zeigt zwei wichtige Punkte. Erstens werden boolesche Operatoren nach Priorität geordnet – der Operator not hat die höchste Priorität, gefolgt vom Operator and, gefolgt vom Operator or. Zweitens werden die folgenden Werte automatisch zu False ausgewertet: das Schlüsselwort None, der Integer-Wert 0, der Float-Wert 0.0, leere Strings oder leere Containertypen.
Strings
Python-Strings sind Zeichenfolgen. Strings sind unveränderlich, können also nach der Erschaffung nicht verändert werden. Es gibt zwar noch andere Methoden, um Strings herzustellen, doch dies sind die fünf gebräuchlichsten:
Einfache Anführungszeichen'Ja'
Doppelte AnführungszeichenJa
Dreifache Anführungszeichen für mehrzeilige Strings'''Ja''' oder Ja
Die String-Methodestr(5) == '5' ist True
Verkettung'Py' + 'thon' wird 'Python'
Oft verwenden Sie explizit Whitespace-Zeichen (Leerraum) in Strings. Die am häufigsten eingesetzten Whitespace-Zeichen sind das Newline-Zeichen \n, das Leerzeichen \s und das Tabulator-Zeichen \t.
Listing 1–5 zeigt die wichtigsten String-Methoden.
## Die wichtigsten String-Methoden
y = Das ist faul\t\n
print(y.strip())
# Entfernt Whitespace: 'Das ist faul'
print(DrDre
.lower())
# Kleinbuchstaben: 'drdre'
print(achtung
.upper())
# Großbuchstaben: 'ATTENTION'
print(smartphone
.startswith(smart
))
# Vergleicht das Präfix des Strings mit dem Argument: True
print(smartphone
.endswith(phone
))
# Vergleicht das Suffix des Strings mit dem Argument: True
print(another
.find(other
))
# Vergleichsindex: 2
print(cheat
.replace(ch
, m
))
# Ersetzt alle Vorkommen des ersten durch das zweite Argument: meat
print(','.join([F
, B
, I
]))
# Setzt alle Elemente in der Liste unter Verwendung des Trenn-Strings
hintereinander: F,B,I
print(len(Rumpelstiltskin
))
# String-Länge: 15
print(ear
in earth
)
# Enthält: True
Listing 1–5Der Datentyp string
Diese nicht vollständige Liste der String-Methoden zeigt, wie viel Macht der Datentyp string besitzt und dass Sie viele der gebräuchlichen String-Probleme mit der in Python enthaltenen Funktionalität lösen können. Falls Sie unsicher sind, wie Sie ein bestimmtes Ergebnis bei String-Problemen erreichen, schauen Sie in die Onlinereferenz mit allen eingebauten String-Methoden: https://docs.python.org/3/library/string.html#module-string.
Boolesche Werte, Integer, Floats und Strings sind die wichtigsten grundlegenden Datentypen in Python. Oft jedoch müssen Sie Datenelemente nicht nur erzeugen, sondern auch strukturieren. In diesen Fällen helfen Ihnen Containertypen. Doch bevor wir uns diese anschauen, wollen wir noch einen wichtigen Spezialdatentyp kennenlernen: None.
Das Schlüsselwort None
Das Schlüsselwort None ist eine Python-Konstante und bedeutet die Abwesenheit eines Werts. Andere Programmiersprachen wie etwa Java nutzen stattdessen den Wert null. Allerdings verwirrt der Begriff null Anfänger oft, die glauben, dies sei gleich dem Integer-Wert 0. Python nutzt also das Schlüsselwort None, wie Listing 1–6 zeigt, um anzudeuten, dass es sich von jedem anderen numerischen Wert für null, einer leeren Liste oder einem leeren String unterscheidet. Interessanterweise ist der Wert None der einzige Wert im Datentyp NoneType.
def f():
x = 2
# Das Schlüsselwort 'is' wird als Nächstes eingeführt
print(f() is None)
# True
print( == None)
# False
print(0 == None)
# False
Listing 1–6Die Verwendung des Schlüsselworts None
Dieser Code zeigt mehrere Beispiele für den Datenwert None (und was er nicht ist). Falls Sie für eine Funktion keinen Rückgabewert definieren, wird standardmäßig None zurückgeliefert.
Container-Datenstrukturen
Python enthält Container-Datentypen, die effizient mit komplexen Operationen zurechtkommen und dabei leicht verwendbar sind.
Listen
Die Liste ist ein Container-Datentyp, der eine Abfolge von Elementen speichert. Im Gegensatz zu Strings sind Listen veränderbar – Sie können sie zur Laufzeit modifizieren. Am besten beschreibe ich die Liste an einigen Beispielen:
l = [1, 2, 2]
print(len(l))
# 3
Dieser Codeausschnitt zeigt, wie eine Liste mittels eckiger Klammern erzeugt und dann mit drei Integer-Elementen gefüllt wird. Elemente in Listen dürfen sich übrigens wiederholen. Die Funktion len() gibt die Anzahl der Elemente in einer Liste zurück.
Schlüsselwort: is
Das Schlüsselwort is prüft einfach, ob beide Variablen auf dasselbe Objekt im Speicher verweisen. Das kann für Python-Anfänger verwirrend sein. Listing 1–7 prüft, ob zwei Integer und zwei Listen sich auf dasselbe Objekt im Speicher beziehen.
y = x = 3
print(x is y)
# True
print([3] is [3])
# False
Listing 1–7Das Schlüsselwort is im Einsatz
Wenn Sie zwei Listen anlegen, beziehen diese sich – auch wenn sie dieselben Elemente enthalten – auf zwei unterschiedliche Listenobjekte im Speicher. Das Verändern des einen Listenobjekts hat keinen Einfluss auf das andere Listenobjekt. Wir bezeichnen Listen als veränderbar, weil sie nach dem Erzeugen modifiziert werden können. Wenn Sie also prüfen, ob eine Liste sich im Speicher auf dasselbe Objekt bezieht, ist das Ergebnis False. Integer-Werte dagegen sind unveränderbar, weshalb nicht das Risiko besteht, dass eine Variable das Objekt verändert, das dann versehentlich alle anderen Variablen ändert. Der Grund besteht darin, dass Sie das Integer-Objekt 3 nicht ändern können – wenn Sie es versuchen, wird lediglich ein neues Integer-Objekt angelegt, und das alte bleibt unverändert.
Elemente hinzufügen
Python bietet drei einfache Möglichkeiten, um Elemente zu einer vorhandenen Liste hinzuzufügen: Anhängen, Einfügen oder Listenverkettung.
# 1. Append (Anhängen)
l = [1, 2, 2]
l.append(4)
print(l)
# [1, 2, 2, 4]
# 2. Insert (Einfügen)
l = [1, 2, 4]
l.insert(2, 3)
print(l)
# [1, 2, 3, 4]
# 3. Listenverkettung
print([1, 2, 2] + [4])
# [1, 2, 2, 4]
Alle drei Operationen generieren die Liste [1, 2, 2, 4]. Dabei ist die append-Operation am schnellsten, weil sie weder die Liste durchlaufen muss, um ein Element an der korrekten Position einzufügen (wie bei insert), noch aus zwei Teillisten eine neue Liste erzeugen muss (wie bei der Listenverkettung). Grob gesagt, benutzen Sie die insert-Operation nur, wenn Sie ein Element an einer bestimmten Position in der Liste hinzufügen wollen, die nicht die letzte Position ist. Die Listenverkettung wiederum verwenden Sie, um zwei Listen beliebiger Länge miteinander zu verketten. Beachten Sie, dass eine vierte Methode, extend(), es Ihnen erlaubt, effizient mehrere Elemente an eine bestimmte Liste anzuhängen.
Elemente entfernen
Mit der list-Methode remove(x): können Sie ganz leicht ein Element x aus einer Liste entfernen:
l = [1, 2, 2, 4]
l.remove(1)
print(l)
# [2, 2, 4]
Die Methode arbeitet auf dem Listenobjekt selbst, statt eine neue, geänderte Liste zu erzeugen. Im vorherigen Codebeispiel erzeugen wir ein Listenobjekt namens l und modifizieren genau dieses Objekt im Speicher, indem wir ein Element entfernen. Dies verhindert eine unnötige Belegung von Speicher, da es keine redundanten Kopien der gleichen Listendaten gibt.
Listen umkehren
Sie können die Reihenfolge der Listenelemente mit der Methode list.reverse() umkehren:
l = [1, 2, 2, 4]
l.reverse()
print(l)
# [4, 2, 2, 1]
Durch das Umkehren der Liste wird das ursprüngliche Listenobjekt modifiziert und nicht lediglich ein neues Listenobjekt angelegt.
Listen sortieren
Mit der Methode list.sort() können Sie die Listenelemente sortieren:
l = [2, 1, 4, 2]
l.sort()
print(l)
# [1, 2, 2, 4]
Auch hier wird durch das Sortieren der Liste das originale Listenobjekt verändert. Die resultierende Liste ist aufsteigend sortiert. Listen mit String-Objekten werden in aufsteigender lexikografischer Weise sortiert (von 'a' bis 'z'). Im Allgemeinen geht die Sortierfunktion davon aus, dass zwei Objekte miteinander verglichen werden können. Grob gesagt gilt, wenn Sie a > b für die Objekte a und b eines beliebigen Datentyps berechnen können, kann Python auch die Liste [a, b] sortieren.
Listenelemente indizieren
Den Index eines bestimmten Listenelements x können Sie mit der Methode list.index(x) ermitteln:
print([2, 2, 4].index(2))
# 0
print([2, 2, 4].index(2,1))
# 1
Die Methode index(x) sucht das erste Auftreten des Elements x in der Liste und gibt dessen Index zurück. Wie alle großen Programmiersprachen weist Python der ersten Sequenz den Index 0 und der i. Sequenz den Index i−1 zu.
Stacks
Die Datenstruktur stack arbeitet intuitiv als First-in-First-out-(FIFO-)Struktur. Stellen Sie sich das wie einen Papierstapel vor: Jedes neue Blatt legen Sie oben auf den Stapel alter Papiere, und wenn Sie den Stapel durcharbeiten, dann entfernen Sie jeweils das oberste Dokument. Stacks sind in der Informatik eine grundlegende Datenstruktur, die in der Verwaltung von Betriebssystemen, in Algorithmen, beim Syntax-Parsing und beim Backtracking zum Einsatz kommt.
Python-Listen können intuitiv als Stacks eingesetzt werden, wobei die Listenoperation append() etwas zum Stack hinzufügt und pop() das zuletzt hinzugefügte Element entfernt:
stack = [3]
stack.append(42) # [3, 42]
stack.pop() # 42 (stack: [3])
stack.pop() # 3 (stack: [])
Aufgrund der Effizienz der Listenimplementierung ist es meist nicht nötig, externe Stack-Bibliotheken zu importieren.
Mengen
Die Datenstruktur set ist ein Sammeldatentyp in Python und vielen anderen Programmiersprachen. Beliebte Sprachen für verteilte Systeme (z. B. MapReduce oder Apache Spark) setzen sogar fast ausschließlich auf Mengenoperationen als Grundfunktionen für die Programmierung. Was genau ist eine Menge also? Eine Menge ist eine ungeordnete Sammlung eindeutiger Elemente. Zerlegen wir diese Definition in ihre Bestandteile.
Sammlung
Eine Menge ist eine Sammlung von Elementen wie eine Liste oder ein Tupel. Die Sammlung besteht entweder aus primitiven (Integer, Floats, Strings) oder aus komplexen Elementen (Objekte, Tupel). Allerdings müssen alle Datentypen Hash-fähig sein, was bedeutet, dass ihnen ein Hash-Wert zugeordnet ist. Der Hash-Wert eines Objekts ändert sich nie und wird dazu verwendet, um das Objekt mit anderen Objekten zu vergleichen. Schauen wir uns das Beispiel in Listing 1–8 an, das eine Menge aus drei Strings erzeugt, nachdem deren Hash-Werte geprüft wurden. Sie versuchen, eine Menge aus Listen herzustellen, was nicht funktioniert, da Listen nicht Hash-fähig