CodeGym /Java Kurs /Python SELF DE /Listengenerierung

Listengenerierung

Python SELF DE
Level 7 , Lektion 7
Verfügbar

7.1 Multiplikation

In Python gibt es eine bequeme Syntax, mit der man die Anzahl der Elemente erhöhen kann. Dazu wird der einfache Multiplikationsoperator verwendet.

String-Generierung

Er kann auf Strings angewandt werden:


print("Mama" * 5)  # gibt MamaMamaMamaMamaMama aus
        

Oder man kann beispielsweise schnell einen Trennstrich ausgeben:


print("-" * 40)  # gibt ---------------------------------------- aus
        

Listengenerierung

Man kann auch die Anzahl der Elemente in einer Liste multiplizieren:


print(["apple"] * 5)  # gibt ['apple', 'apple', 'apple', 'apple', 'apple'] aus
        

Dieser Operator hat auch eine praktischere Anwendung. Zum Beispiel willst du eine Liste mit 10 Elementen erstellen, die mit Nullen gefüllt ist:


alist = [0] * 10
print(alist)  # gibt [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] aus 
        

Du kannst sogar ein zweidimensionales Array erstellen. Zum Beispiel möchtest du ein 20x10 Array erstellen, das mit Nullen gefüllt ist. Das ist auch einfach:


alist = [[0] * 10] * 20 
print(alist)  # gibt [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ...] aus
        

Ziemlich praktisch, oder?

7.2 List Comprehension

In Python gibt es ein nützliches Tool namens „List Comprehension“ – das ist ein bequemer und kompakter Weg, um Listen zu erstellen. Dieses syntaktische Tool ermöglicht es, neue Listen zu generieren, indem ein Ausdruck auf jedes Element eines iterierbaren Objekts in einer kurzen Codezeile angewendet wird.

Es ist leichter, es zu zeigen, als zu beschreiben. Dieses syntaktische Tool sieht so aus:


[Ausdruck for Variable in Sequenz]

Wo:

  • Variable — ein Identifikator einer bestimmten Variablen,
  • Sequenz — eine Sequenz von Werten, die die gegebene Variable annimmt (das kann eine Liste, ein String oder ein Objekt sein, das mit der Funktion range erhalten wurde),
  • Ausdruck — ein gewisser Ausdruck, der normalerweise von der im Generator verwendeten Variablen abhängt, und mit dem die Listenelemente gefüllt werden.

Wichtig! Der gesamte Ausdruck muss in eckige Klammern gesetzt werden.

Hier sind einige Beispiele für die Verwendung von Generatoren:

Eine Liste erstellen, die aus n Nullen besteht, ist auch mit einem Generator möglich:


alist = [0 for i in range(100)]
        

Eine Liste erstellen, die mit Quadratzahlen von Ganzzahlen gefüllt ist, könnte so aussehen:


n = 5
alist = [i ** 2 for i in range(n)]            
        

Eine Liste erstellen, die mit ganzen Zahlen von 1 bis n gefüllt ist:


n = 10
alist = [i + 1 for i in range(n)]
        

Und so kannst du eine Liste erhalten, die mit zufälligen Zahlen von 1 bis 9 gefüllt ist (mithilfe der Funktion randrange() aus dem Modul random):


from random import randrange

n = 10
alist = [randrange(1, 10) for i in range(n)]
        

7.3 Schleife in List Comprehension

List Comprehension kann nicht nur zur Generierung von Listen verwendet werden. Im Prinzip ist es einfach eine kompakte Möglichkeit, eine for-Schleife zu schreiben.

Zum Beispiel kannst du damit einfach einige Werte aus einer Liste auf dem Bildschirm ausgeben:


alist = ["apple", "banana", "cherry"]
[print(x) for x in alist]
        

Oder du kannst sogar Werte von der Tastatur eingeben:


a = [input() for i in range(int(input()))]
        

In diesem Beispiel besteht die Liste aus Zeichenketten, die vom Standard-Eingabegerät gelesen wurden: Zuerst musst du die Anzahl der Listenelemente eingeben (dieser Wert wird als Argument der Funktion range verwendet), danach die angegebene Anzahl von Zeichenketten.

In der dir gewohnten Form sieht dieser Code so aus:


n = int(input())
a = []
for i in range(n):
    x = input()  
    a.append(x)
        

Generell gibt es viele Möglichkeiten mit List Comprehension:

Bedingungen können verwendet werden:

Das Einschließen von Bedingungen in den Ausdruck erlaubt es, Elemente zu filtern, z.B. kann man eine Liste nur aus geraden Zahlen erstellen:


[x for x in range(10) if x % 2 == 0]
        

Eingebettete Schleifen:

Der Generator erlaubt es, verschachtelte Schleifen zu verwenden, zum Beispiel zur Erstellung von mehrdimensionalen Arrays:


[(x, y) for x in range(3) for y in range(3)]
        
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION