Entdecken Sie Millionen von E-Books, Hörbüchern und vieles mehr mit einer kostenlosen Testversion

Nur $11.99/Monat nach der Testphase. Jederzeit kündbar.

Python One-Liners: Profi-Programmierung durch kurz gefasstes Python
Python One-Liners: Profi-Programmierung durch kurz gefasstes Python
Python One-Liners: Profi-Programmierung durch kurz gefasstes Python
eBook492 Seiten3 Stunden

Python One-Liners: Profi-Programmierung durch kurz gefasstes Python

Bewertung: 0 von 5 Sternen

()

Vorschau lesen

Über dieses E-Book

Python in seiner raffiniertesten Form
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.
SpracheDeutsch
Herausgeberdpunkt.verlag
Erscheinungsdatum29. März 2021
ISBN9783969101155
Python One-Liners: Profi-Programmierung durch kurz gefasstes Python

Mehr von Christian Mayer lesen

Ähnlich wie Python One-Liners

Ähnliche E-Books

Programmieren für Sie

Mehr anzeigen

Ähnliche Artikel

Rezensionen für Python One-Liners

Bewertung: 0 von 5 Sternen
0 Bewertungen

0 Bewertungen0 Rezensionen

Wie hat es Ihnen gefallen?

Zum Bewerten, tippen

Die Rezension muss mindestens 10 Wörter umfassen

    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

    Gefällt Ihnen die Vorschau?
    Seite 1 von 1