PyDay: Die listige Python

Inzwischen ist euch sicher bekannt, dass die Programmiersprache Python einige interessante Elemente enthält. Das lässt den Code sehr kompakt und dennoch elegant aussehen. Insbesondere einige eingebaute Funktionen sind dabei extrem hilfreich.

In dem nebenstehend verlinkten Buch (Affiliate-Link!) habe ich für den Datentyp „list“ eine solche Funktion gefunden, die das Sortieren einer Liste betrifft, die ich euch gern demonstrieren möchte.

Gehen wir beispielhalber zunächst von der normalen Sortierfunktion aus. Dabei gibt es eine nachvollziehbare Voraussetzung: Die Elemente der Liste müssen sortierbar sein! Was im ersten Moment ziemlich trivial klingt, kann bei näherer Betrachtung überraschende Unmöglichkeiten enthalten. In dem Buch erläutern die Autoren dies am Beispiel komplexer Zahlen, für die nämlich keine Sortierungsvorschrift existiert.

Einfaches

Eine simple Liste von Zahlen ist natürlich sortierbar, was man sehr einfach in der Python-Konsole (unter Windows einfach „Start –> Ausführen –> Python“, unter Linux einfach Konsole starten, „python“ eingeben und RETURN drücken) nachvollziehen kann. Zunächst definieren wir in Zeile 1 eine Liste von Zahlen, die ich mangels größerer Fantasie einfach aus dem Datum und der Uhrzeit erstellt habe, als ich diesen Artikel geschrieben habe. Zeile 2 gibt diese testweise auf der Konsole aus. Wie wir sehen, entspricht die Reihenfolge noch genau der Eingabe. In Zeile 4 sortieren wir die Liste, Zeile 5 dient wieder der Ausgabe und zeigt nun die sortierte Liste. So weit, so gut.

  1. meineliste = [23, 12, 2015, 14, 43]
  2. meineliste
  3. [23, 12, 2015, 14, 43]
  4. meineliste.sort()
  5. meineliste
  6. [12, 14, 23, 43, 2015]

Spannenderes

Spannend wird es, wenn das Sortierkriterium entweder gar nicht existiert oder aus einer völlig anderen Quelle kommt. Wie wäre es beispielsweise, wenn ich meine Kundenliste nicht nach dem Namen, sondern nach deren Umsatz sortieren möchte?

Probieren wir folgendes:

class Kunde(object):
    def __init__(self, name, umsatz):
        self._name = name
        self._umsatz = umsatz
 
    def name(self):
        return self._name
 
    def umsatz(self):
        return self._umsatz
 
kunde1 = Kunde('Müller', 69000)
kunde2 = Kunde('Meier', 42000)
kunde3 = Kunde('Schulze', 23000)
 
kundenliste = [kunde1, kunde2, kunde3]
kundenliste.sort()

Was passiert dabei? Probier es aus, Fortsetzung folgt …


SmallInvoice Logo

Ähnliche Artikel:

AuthorChristoph Jüngling

Selbständiger Softwareentwickler und Seminarleiter

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

vier × 3 =