Zum Hauptinhalt springen
24ef

Listen Erzeugen

Aufgabe

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 Schrittweite schritt

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)
Aufgabe

Initialisieren Sie mit List Comprehension eine Liste mit den

  • ersten zehn Quadratzahlen

  • ersten zehn Zweierpotenzen

  • die Zweierpotenzen von 21002^{100} bis 21102^{110}

  • 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)
SSR

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)