Christian Mayer

Python One-Liners


Скачать книгу

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.

      print(x is y)

      # True

      print([3] is [3])

      # False

       Listing 1–7 Das 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