Oft wünscht man Listen, welche schon mit bestimmten Werten abgefüllt sind, man sagt initialisiert sind.
Unten sehen Sie ein paar hilfreiche Beispiele. Führen Sie diese aus und bearbeiten Sie die Aufgabe.
Markieren Sie anschliessend diese Aufgabe als erledigt.
Hier sehen Sie, wie man auf einfache Art und Weise eine Liste erzeugen und gleich mit bestimmten Werten füllen kann, man sagt intialisieren. Der Teil zwischen den []
wird als Listen-Abstraktion (englisch list comprehension) bezeichnet.
Listen mit range
erzeugen
Definition
Mit dem von Schleifen bekannten range
Befehl können auch Listen erzeugt werden.
range(max_zahl)
erzeugt einen Bereich von
0
bis (ohne mit!)max_zahl
z.B.
range(5)
=>0, 1, 2, 3, 4
range(start, m)
erzeugt einen Bereich von
start
bis (ohne mit!)m
z.B.
range(3, 7)
=>3, 4, 5, 6
range(s, m, schritt)
erzeugt einen Bereich von
s
bis (ohne mit!)m
mit der gegebenen Schrittweiteschritt
z.B.
range(3, 13, 4)
=>3, 7, 11
Um aus einem Bereich (sog. Iterator
) eine Liste zu erzeugen, muss der Bereich mit dem Befehl list()
in eine Liste umgewandelt werden:
one2ten = list(range(1, 11))
print('1 bis 10:', one2ten)
odd_numbers = list(range(1, 20, 2))
print('Ungerade Zahlen:', odd_numbers)
ten2zero = list(range(10, -1, -1))
print('Von Zehn rückwärts:', ten2zero)
Listen mit List Comprehension erzeugen
Liste mit 1
initialisieren
Liste mit 10 Elementen. Alle enthalten den Wert 1.
# Wert 1 in Liste setzen
# \ ...für alle Zahlen im Bereich 0 bis 10
# \ /
ones = [1 for i in range(10)]
print(ones)
Zahlen von 0 bis 9
Liste mit den Zahlen 0 bis 9 initialisieren:
# Aktuellen Wert des Schleifenzählers i setzen
# \ ...für alle Zahlen im Bereich 0 bis 10
# \ /
zahlen = [i for i in range(10)]
print(zahlen)
Gerade Zahlen
Liste mit 10 geraden Zahlen, beginnend bei 0.
gerade_zahlen = [2*i for i in range(10)]
print(gerade_zahlen)
Initialisieren Sie mit List Comprehension eine Liste mit den
-
ersten zehn Quadratzahlen
-
ersten zehn Zweierpotenzen
-
die Zweierpotenzen von bis
-
die natürlichen Zahlen rückwärts von 20 bis und mit 10
squares = [] # initialisierung anpassen!
power2 = []
power2_100 = []
twenty2ten = []
print(squares)
print(power2)
print(power2_100)
print(twenty2ten)
5x10
-Matrix
5x10
-Matrix von lauter 0
(5 Zeilen, 10 Spalten)
_print = print
def print(mat):
if type(mat).__name__ != 'list' or len(mat) < 1 or type(mat[0]).__name__ != 'list':
return _print(mat)
max_val = max([max(z) for z in mat])
pad_sz = len(str(max_val))
_print('['); [_print(f' [{", ".join(list(map(lambda v: str(v).rjust(pad_sz, " "), z)))}],') for z in mat]; _print(']')
### PRE
zeros_5x10 = [
[0 for j in range(10)] for i in range(5)
]
print(zeros_5x10)
5x10
-Matrix, Durchnummeriert
Elemente haben aufsteigende Werte, beginnend bei 0
.
Der
_print = print
def print(mat):
if type(mat).__name__ != 'list' or len(mat) < 1 or type(mat[0]).__name__ != 'list':
return _print(mat)
max_val = max([max(z) for z in mat])
pad_sz = len(str(max_val))
_print('['); [_print(f' [{", ".join(list(map(lambda v: str(v).rjust(pad_sz, " "), z)))}],') for z in mat]; _print(']')
### PRE
matrix = [
[i * 10 + j for j in range(10)] for i in range(5)
]
print(matrix)
Listen Erzeugen