Zum Inhalt

Kollektionen

Eigenschaften von Kollektionen

Strings sind nicht die wichtigste Objekte, die beim Programmieren verwendet werden, Listen sind z.B. wichtiger; sie werden in eckige Klammern geschrieben. Man hat die folgenden Möglichkeiten:

  • Sequenzen, bei denen die Reihenfolge eine Rolle spielt
    • list ['Haus', 'Katze', 'Maus']
    • tuple (1, 2, 3)
    • str 'Hallo'
    • byte b'Bl\xc3\xb6de Buchstaben'
  • Und Kollektionen, bei denen die Reihenfolge keine Rolle spielt
    • Mengen
      • set {1, 2, 3}
      • frozenset frozenset{1, 2, 3}
    • dict {'schluessel': 'wert', 'key': 'value'}

Eine wichtige Eigenschaft von Kollektionen ist ihre (Un-)Veränderbarkeit.

  • Unveränderbar

    • tuple
    • str
    • bytes
    • frozenset
  • Veränderbar

    • list
    • set
    • dict

list

1
2
3
4
5
6
7
8
a = ['alpha','beta', 'gamma', 'delta']
a[2]
a[-1]
a[0:2]
3*a + ['epsilon']
len(a)
a.append('epsilon')
a += ['epsilon']

Das folgende Slicing ist etwas Besonderes: b = a[:] Dabei wird eine neue Liste mit dem gleichen (aber nicht dem selben) Inhalt erzeugt. Pythonesk ist zum Erstellen einer neuer Liste aus einer alten - man spricht auch von Klonen - aber vielmehr: b = list(a) oder in Python 3:

1
b = a.copy()
1
2
3
4
a = [0,1,0,1,0,1]
a[0]+1
a[0:2] = []
a.sort()
1
2
3
4
from random import shuffle
a = [0,1,0,1,0,1]
shuffle(a)
del a[0]

Es gibt viele Methoden, Listen zu erzeugen

list(range(10))

[2*i for i in range(4,9)]

das Letzte nennt man Comprehension und ist eine Spezialität von Python.

Man kan in Listen natürlich auch Listen speichern, man spricht von geschachtelten Listen, oder auch von Matrizen.

1
2
3
>>> matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> matrix[1][0]
4

Quadratzahlen

Bilde eine Liste der ersten 1000 Quadratzahlen.

Schere-Stein-Papier

Programmiere "Schere-Stein-Papier", bei dem der Benutzer entweder gegen den (zufällig spielenden) Computer, oder eine zweite Person spielt.

Tip
1
2
3
4
5
>>> import random
>>> random.random()
0.864868979845631
>>> random.randint(5,8)
5

Satz-Statistik

Erkläre den folgenden Code

1
2
3
4
a = "Das sind einige willkürlich lange Wörter"
b = a.split()
for x in b:
    print(x, len(x))

Telefonnummern-Suche

Schreibe ein Programm, bei dem der Benutzer einen Buchstaben schreibet und das Programm die dazu passenden vollständigen Namen und deren Telefonnummern ausgibt.

Tip

Verwende für die Datenspeicherung eine Liste von Tupeln und eine for-Schleife, um sie zu durchsuchen.

1
2
3
4
5
kontakte = [("DorKeinath", "12345"), ("DorFuch","31416")]

... for (name,nummer) in kontakte:
        if name[0] == eingabe:
            ...

dict

Bei Dictionaries können unveränderbare Kollektionen irgend welchen anderen Inhalten zugeordnet werden.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
dict = {'schluessel': 'wert', 'key': 'value'}
print('Das sind alle vorhandenen Schlüssel:')
for key in dict:
    print(key)
print('Das sind alle vorhandenen Werte:')
for key in dict:
    print(dict[key])
print('Das sind alle vorhandenen Zuordnungen (Tupel):')
for key, value in dict.items():
    print(key, value)

Will man zwischen Listen und Dictionaries umwandeln, kann man sich die Funktionen itmes(), keys(), values(), list() anschauen.

Vokabeltrainer

Schreibe ein Programm, mit dem man sich Vokabeln abfragen kann.

Anwesenheitsampel

Programmiere eine Ampel, die anzeigt, ob ein Lehrer in einem kleinen Lehrerzimmer (mit ca. fünf Lehrern) ist. Gib dafür jedem Lehrer eine Zahl vor, damit er beim Hin- und Hinausgehen nur seine Zahl eintippen muss, um seinen Status zu ändern. Von außen sehen die Schüler nur die anwesenden Lehrer.

Häufigkeitsanalyse

Schreibe ein Programm, das für einen Text eine Häufigkeitsanalyse erstellt.

Lieblingslehrer

Schreibe ein Programm, bei dem der Benutzer Eigenschaften auswählt und am Ende seinen Lieblingslehrer angezeigt bekommt, d.h. den Lehrer, der die (Variante: meisten der) ausgewählten Eigenschaften hat.

Tip

Lege für die Eigenschaften eine Reihenfolge fest und verwende Listen als Werte des Dictionaries, oder verwende jeweils ein Dictionary als Wert.

1
dict = {'DorKeinath': ['Eis', 'Rot', 'Fußball'], 'DorAndere': ['Pizza', 'Blau', 'Tanzen']}