Große Datenengen speichert man in Listen. So wie sich auf einem Feld verschiedene Apfelsorten wiederholen, wiederholen sich in Listen verschiedene Werte. Für den Zugriff verwendet man typischerweise einen Index. Mithilfe einer Schleife kann man sehr elegant auf die einzelnen Werte zugreifen.
In diesem Artikel wird der grundsätzliche Aufbau von Listen und deren Index erklärt. Mit Hilfe von foreach
-Schleifen wird auf jeden einzelnen Wert zugegriffen.
Große Datenmengen speichert man in Listen. So wie sich auf einem Feld gleiche Apfelsorten wiederholen, wiederholen sich in Listen Werte gleichen oder unterschiedlichen Datentyps.
Als Beispiel soll folgende Tabelle in einer Liste gespeichert werden:Index | 0 | 1 | 2 |
0 | Gala | rot | süß |
1 | Elstar | rot | fein säuerlich |
2 | Delicious | grün | süß aromatisch |
Eine eindimensionale Liste legt man mit eckigen Klammern [..]
an. Die Initialisierung erfolgt durch Angabe der Werte, welche durch ein Komma getrennt werden. Der Index wird automatisch zugewiesen und beginnt immer bei Null.
apfelsorte = ["Gala", "Elstar", "Delicious"]
Eine mehrdimensionale Liste hat nun je nach Verschachtelung mehrere Indizes, hier zwei. Die Indizes werden auch hier automatisch zugewiesen und beginnen immer bei Null.
apfelinfo = [
["Gala", "rot", "süß"],
["Elstar", "rot", "sauer"],
["Delicious", "grün", "süß"]
]
Für den Zugriff auf eine Apfelsorte gibt man die entsprechenden Indizes in eckigen Klammern an:
print(f"Apfelsorte: {apfelinfo[1][0]})
Möchte man einen Wert ersetzen geht dies auch über den Index:
apfelinfo[0][0]="Boskoop"
apfelinfo[0][1]="rot"
apfelinfo[0][2]="säurebetont"
Listen erweitern:
apfelsorte = apfelsorte + ["Boskoop"]
apfelinfo = apfelinfo + [["Boskoop","rot 🍎","säurebetont"]]
Gala ist rot 🍎 und schmeckt süß.
Elstar ist rot 🍎 und schmeckt sauer.
Delicious ist grün 🍏 und schmeckt süß.
apple = [
["Gala", "rot 🍎", "süß"],
["Elstar", "rot 🍎", "sauer"],
["Delicious", "grün 🍏", "süß"]
]
print(f"{apple[0][0]} ist {apple[0][1]} und schmeckt {apple[0][2]}.")
print(f"{apple[1][0]} ist {apple[1][1]} und schmeckt {apple[1][2]}.")
print(f"{apple[2][0]} ist {apple[2][1]} und schmeckt {apple[2][2]}.")
Elstar ist rot 🍎 und schmeckt sauer.
apple = [
["Gala","rot 🍎","süß"],
["Elstar", "rot 🍎", "sauer"],
["Delicious", "grün 🍏", "süß"]
]
#Apfelinfoausgeben
sorte = int(input("Mehr Infos zu: Gala (1), Elstar (2) Delicius (3)?"))
print(f"{apple[sorte-1][0]} ist {apple[sorte-1][1]} und schmeckt {apple[sorte-1][2]}.")
Möchte man auf eine eindimensionale Liste zugreifen,verwendet man eine for-Schleife. Der Zugriff auf ein mehrdimensionales gelingt mit der verschachtelten for-Schleife:
for i in range(3):
for j in range(3):
print(apfelinfo[i][j])
print()
Der Nachteil dieser Methode liegt darin, dass es etwas unübersichtlich ist und das die Anzahl der Einträge bekannt sein muß. Aus diesem Grund gibt es die for-each-Schleife mit der man wie folgt auf die einezlnen Elemente einer eindimensionalen Liste zugreift:
for wert in apfelsorte:
print(f"{wert}", end=" ")
Der Zugriff auf eine mehrdimensionale Liste funktioniert über eine verschachtelte for-each-Schleife:
for row in apfelinfo:
for data in row:
print(f"{data:9s}", end=" ")
print()
Sorte | Farbe | Geschmack | kgPreis |
---|---|---|---|
Gala | rot 🍎 | süß | 2.7 |
Elstar | rot 🍎 | fein säuerlich | 2.3 |
Delicious | grün 🍏 | süß | 2.8 |
apfelinfo = [
["Gala","rot 🍎","süß", 2.7],
["Elstar", "rot 🍎", "sauer", 2.3],
["Delicious", "grün 🍏", "süß", 2.8]]
#Preisliste ausgeben
print("Sorte Farbe Geschmack kgPreis")
for item in apfelinfo:
print(f"{item[0]:10s}{item[1]:9s}{item[2]:9s}{item[3]:7.2f}")
Ihr Einkauf 🛒
Delicious grün 🍏 süß 2.8 €kg ⋅ 3.20 kg = 8.96 €
sorte = int(input("Wähle: Gala(1), Elstar(2), Delicious(3)"))
menge = float(input("Gib die Menge ein: "))
print(f"\nIhr Einkauf 🛒")
for data in apple[sorte-1]:
print(data, end = " ")
print(f"€kg ⋅ {menge:.2f} kg = {menge*apple[sorte-1][3]:.2f} €")
Wähle die korrekten Aussagen aus.
Gegeben ist folgender Quellcode in Python:
apple = [
["Gala", "rot", "süß", 2.70],
["Elstar", "rot", "sauer", 2.30],
["Delicious", "grün", "süß", 2.80]
]
Greife auf die erste Apfelsorte zu.
Wähle eine Antwort.
apple[1][1]
apple[0][1]
apple[1][0]
apple[0][0]
apple[3][1]
apple[1][3]
apple[2][2]
apple[3][3]
Ändere den Geschmack von Elstar auf "aromatisch".
Wähle eine Antwort.
apple[1][3]="aromatisch"
apple[1][4]="aromatisch"
apple[1][2]="aromatisch"
aromatisch"=apple[1][1]
Aktualisiere den Preis von Gala auf 1,90 €.
Wähle eine Antwort.
apple[0][3]=1.9
apple[1][3]=1.9
app1e[1][3]=1,9
apple[0][3]="1.9"
Gib die zweite Spalte aus.
Wähle eine Antwort.
for item in apple: print(item[1])
for apple in item: print(item[1])
for item in apple: print(apple[1])
for apple in range: print(range[1])
Gib die erste Zeile aus.
Wähle eine Antwort.
for i in apple: print(apple[0][i])
for i in range(4): print(apple[i][0])
for i in range(4): print(apple[0][i])
for i in range(1,5): print(apple[0][i])
Australien ist ein Kontinent mit einer einzigartigen Fauna und Flora.
Der Elsey Nationalpark liegt im Norden Australiens und zeichnet sich durch warme Quellen und eine tolle Tiervielfalt aus.
Die Wassertemperatur eines Bergsees soll über eine Woche aufgezeichnet und ausgewertet werden.
Speicher hierzu die Wochentage in einer weiteren Liste.
wochentag = ["Montag", "Dienstag", "Mittwoch", ...]
Die Ausgabe sollte wie folgt aussehen:
Die Wassertemperarturen im Überblick:
Montag 9.8 °C
Dienstag 9.2 °C
Mittwoch 8.4 °C
Donnerstag 7.9 °C
Freitag 8.1 °C
Samstag 5.0 °C
Sonntag 6.0 °C
Auswertung:
Minimum: 5.00 °C
Maximum: 9.80 °C
Average: 7.77 °C
Wähle die korrekten Aussagen aus.
Ausgabe: 1 2 3 4 5
Bestimme die zugehörige Liste.
Wähle eine Antwort.
wert = [1 2 3 4 5]
wert = 1,2,3,4,5;
wert = [1,2,3,4,5]
foreach [1,2,3,4,5]
Ausgabe: 1, 2, 3, 4, 5,
Bestimme den Quelltext für die Ausgabe.
Wähle eine Antwort.
print(wert[i])
for i in wert: print(wert[i], end=" ")
for i in wert: print(i, end=",")
for i in range(5): print(wert[i], end=", ")
Ausgabe: 5 4 3 2 1 0
Bestimme den Quelltext für die Ausgabe.
Wähle zwei Antworten.
for i in range(5,-1,-1): print(wert[i],end=" ")
for i in range(5,-1,1): print(wert[i],end=" ")
for i in range(5,-1,-1): print(wert[i])
print('5 4 3 2 1 0')
Ausgabe: A B C D
Initialisiere die Liste wert
Wähle eine Antwort.
wert = ["A", "B", "C", "D"]
wert = [A B C D]
wert = ["A" "B" "C" "D"]
wert = "A", "B", "C", "D"
List comprehension ermöglicht eine kurze Syntax beim Erstellen einer neuen Liste, basierend auf den Werten einer vorhandenen Liste. Bspw. möchte man aus einer Liste von Zahlen, alle geraden Zahlen in eine neue Liste schreiben.
zahlen = [0, 1, 4, 6, 8, 9]
gerade = []
for x in zahlen:
if x%2 == 0:
gerade += [x]
Mit List Comprehension (Syntax:
newlist = [expression for item in list if condition]) kann man den Quelltext in einer einzigen Zeile schreiben.
zahlen = [0, 1, 4, 6, 8, 9]
gerade = [x for x in zahlen if x%2 == 0]
Mit List Comprehension lassen sich auch neue Listen generieren.
quadrate = [x**2 for x in range(11) if x%2 == 0]
Und nocht etwas: Mit der Slice-Notation in Python (Syntax: list[<start>:<stop>:<step>]) kann man Listen (und auch Zeichenketten) filtern oder, wie im folgenden Beispiel gezeigt, deren Reiehnfolge umdrehen.
zahlenInvers= zahlen[::-1]
10 Zufallszahlen:
[41, 47, 94, 21, 84, 58, 34, 15, 70, 6]
#Listcomprehension
import random
zufaelligeZahlen = [random.randint(1,100) for i in range(10)]
print(zufaelligeZahlen)
fruechte = ["Apfel 🍎", "Mandarine 🍊", "Erdbeere 🍓", "Banane 🍌", "Melone 🍉", "Mango 🥭"]
#Listcomprehension
neueFruechte = [x for x in fruechte if "M" in x]
print(f"Früchteauswahl: \n{fruechte}")
print(f"Früchte mit 'M': \n{neueFruechte}")
Im ertsten Teil der Aufgabe arbeiten wir mit Zahlenlisten.
Nutze eine while Schleife mit einer verschachtelten List Comprehension. In der inneren Listn Comprehension erzeuge jeweils eine Liste mit einem Zufallswert.
.. for wert in [random.randint(1, 100)] ..
Gegeben ist folgende Liste mit Namen:
liste = ["Anna", "Berta", "Carla", "Doris", "Emilia", "Franziska", "Gabi", "Hannah", "Iris"]
Die Ausgabe sollte wie folgt aussehen:
Zahlenliste:
[8, 7, 10, 10, 3, 9, 7, 3, 1, 3, 7, 3, 6, 9, 3, 4, 7, 8, 9, 9]
Summe der Zahlen: 126
Mittelwert der Zahlen: 6.3
sortierte Zahlenliste:
[1, 3, 3, 3, 3, 3, 4, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 10, 10]
Median: 7.0
Zahlenliste mit 10 zufälligen geraden Zahlen:
[52, 10, 46, 92, 38, 30, 82, 52, 46, 96]
Namenslisten:
['BERTA', 'CARLA', 'DORIS', 'EMILIA', 'FRANZISKA', 'HANNAH']
['FRANZISKA', 'EMILIA', 'HANNAH', 'BERTA', 'CARLA', 'DORIS']
['SIROD', 'ALRAC', 'ATREB', 'HANNAH', 'AILIME', 'AKSIZNARF']
['ANNA', 'HANNAH']
die Liste, -n | Speicher für beliebige Anzahl an Werte mit beliebigem Datentypliste = ["Cola", 1, 2.3, True] |
der Index, Indizes | Wert mit dem auf einzelne Listenemente zugegriffen wird. |
die for-Schleife, -n | eine Anweisung zum Wiederholen von Programmteilenfor i in range (4): print(liste[i]) |
die foreach-Schleife, -n | Schleife um alle Elemente eines Arrays auszugebenfor item in liste: print(item) |