Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| kurse:ef05a-2021:kurven:datenstrukturen-lists-and-dictionaries [2022/01/12 07:24] – [Nützliche Stringmethoden und -funktionen] Ivo Blöchliger | kurse:ef05a-2021:kurven:datenstrukturen-lists-and-dictionaries [2022/01/13 07:17] (current) – [Listen bauen] Ivo Blöchliger | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Datenstrukturen ====== | ||
| + | ===== Strings, Zeichenketten ===== | ||
| + | Strings werden zwischen " oder ' geschrieben. Sie können addiert (aneinandergehängt) und mit natürlichen Zahlen multipliziert werden (hier ein Auszug aus der Python-Konsole): | ||
| + | <code txt> | ||
| + | >>> | ||
| + | >>> | ||
| + | >>> | ||
| + | 'Hello world!' | ||
| + | >>> | ||
| + | 'Hello Hello Hello Hello Hello ' | ||
| + | >>> | ||
| + | >>> | ||
| + | backslash n ist Zeilenumbruch | ||
| + | backslash n ist Zeilenumbruch | ||
| + | backslash n ist Zeilenumbruch | ||
| + | backslash n ist Zeilenumbruch | ||
| + | backslash n ist Zeilenumbruch | ||
| + | </ | ||
| + | ==== Nützliche Stringmethoden und -funktionen ==== | ||
| + | Umwandlung in einen String: '' | ||
| + | |||
| + | Auch wichtig ist die Umwandlung von Strings in Zahlen ('' | ||
| + | <code txt> | ||
| + | >>> | ||
| + | 123 | ||
| + | >>> | ||
| + | Traceback (most recent call last): | ||
| + | File "< | ||
| + | ValueError: invalid literal for int() with base 10: ' 15.9 ' | ||
| + | >>> | ||
| + | 15.9 | ||
| + | </ | ||
| + | === Substrings (wie bei Listen) === | ||
| + | <code txt> | ||
| + | >>> | ||
| + | >>> | ||
| + | ' | ||
| + | >>> | ||
| + | ' | ||
| + | >>> | ||
| + | ' | ||
| + | </ | ||
| + | === split und join === | ||
| + | split: Einen String in eine Liste zerlegen: | ||
| + | <code txt> | ||
| + | >>> | ||
| + | [' | ||
| + | >>> | ||
| + | [' | ||
| + | </ | ||
| + | |||
| + | join: Ein Array von Strings zu einem String zusammenhängen: | ||
| + | <code txt> | ||
| + | >>> | ||
| + | '3 und 4 und 55 und 11 und 3 und 5' | ||
| + | </ | ||
| + | Sind die Einträge im Array keine Strings, müssen diese zuerst umgewandelt werden, z.B. so: | ||
| + | <code txt> | ||
| + | >>> | ||
| + | >>> | ||
| + | [0, 1, 4, 9, 16] | ||
| + | >>> | ||
| + | Traceback (most recent call last): | ||
| + | File "< | ||
| + | TypeError: sequence item 0: expected str instance, int found | ||
| + | >>> | ||
| + | '0 plus 1 plus 4 plus 9 plus 16' | ||
| + | </ | ||
| + | |||
| + | ===== Listen und Tuples (Arrays) ===== | ||
| + | In Python gibt es zwei Arten von Arrays: Listen (veränderbar) und Tuples (unveränderbar). | ||
| + | * Listen: zwischen eckigen Klammern: '' | ||
| + | * Tuples: zwischen runden Klammern: '' | ||
| + | |||
| + | Tuples (unveränderbare Arrays) haben den Vorteil, dass damit effizienter und " | ||
| + | |||
| + | ==== Listen bauen ==== | ||
| + | In folgenden Beispielen enthält a eine Liste, z.B. '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | <code txt> | ||
| + | >>> | ||
| + | >>> | ||
| + | [4, 16, 36, 64] | ||
| + | >>> | ||
| + | >>> | ||
| + | [2.0, 8.0, 18.0, 32.0] | ||
| + | >>> | ||
| + | >>> | ||
| + | [' | ||
| + | >>> | ||
| + | >>> | ||
| + | [' | ||
| + | </ | ||
| + | |||
| + | Über Listen und Tuples kann eine for-Schleife gemacht werden: | ||
| + | <code python> | ||
| + | a = [2, | ||
| + | for p in a: | ||
| + | print(p*p) | ||
| + | </ | ||
| + | |||
| + | {{: | ||
| + | ===== Dictionaries ===== | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Dictionaries (auch Hashtables genannt) sind wie ungeordnete Listen, die anstatt Indizies Schlüssel (keys) haben. Normalerweise sind die keys einfach Strings, es können aber beliebige Python-Objekte verwendet werden. | ||
| + | |||
| + | Dictionaries werden zwischen geschweiften Klammern '' | ||
| + | |||
| + | <code txt> | ||
| + | >>> | ||
| + | >>> | ||
| + | {' | ||
| + | >>> | ||
| + | 10 | ||
| + | >>> | ||
| + | [1, 2, 3] | ||
| + | >>> | ||
| + | 1 | ||
| + | >>> | ||
| + | True | ||
| + | >>> | ||
| + | False | ||
| + | >>> | ||
| + | >>> | ||
| + | {' | ||
| + | >>> | ||
| + | True | ||
| + | >>> | ||
| + | >>> | ||
| + | {' | ||
| + | |||
| + | </ | ||
| + | Über die keys kann iteriert werden: | ||
| + | <code python> | ||
| + | h = {" | ||
| + | for key in h: | ||
| + | print(" | ||
| + | for key,value in h.items(): | ||
| + | print(key+" | ||
| + | |||
| + | </ | ||
| + | liefert den Output | ||
| + | <code txt> | ||
| + | In ruby steht 10 | ||
| + | In python steht 7 | ||
| + | In java steht [1, 2, 3] | ||
| + | ruby -> 10 | ||
| + | python -> 7 | ||
| + | java -> [1, 2, 3] | ||
| + | </ | ||
| + | |||
| + | ===== Text-Dateien lesen und schreiben ===== | ||
| + | Wir eine Datei zum Lesen oder Schreiben geöffnet, muss diese auch wieder geschlossen werden. | ||
| + | Das Konstrukt '' | ||
| + | ==== Datei lesen ==== | ||
| + | |||
| + | <code python> | ||
| + | # Datei lesen | ||
| + | with open(pfad_und_dateiname) as datei: | ||
| + | while True: | ||
| + | line = datei.readline() | ||
| + | if not line: # Testen, ob die Datei nicht schon fertig ist | ||
| + | break | ||
| + | # Tu was mit der Zeile (enthält noch das ' | ||
| + | line = line.rstrip() | ||
| + | |||
| + | </ | ||
| + | Oder alles in eine Liste einlesen: | ||
| + | <code python> | ||
| + | lines = [] # In Python nicht nötig, in den meisten anderen Programmiersprachen schon | ||
| + | with open(pfad_und_dateiname) as datei: | ||
| + | lines = datei.readlines() | ||
| + | |||
| + | # Tu was mit den Zeilen, die Datei ist hier bereits wieder geschlossen | ||
| + | print(lines[0]) | ||
| + | </ | ||
| + | |||
| + | ==== Datei schreiben ==== | ||
| + | <code python> | ||
| + | with open(pfad_und_dateiname, | ||
| + | datei.write(" | ||
| + | datei.write(" | ||
| + | datei.write(str(6*7)) | ||
| + | </ | ||
| + | |||
| + | <code python> | ||
| + | liste_mit_strings = [str(i*i)+" | ||
| + | with open(pfad_und_dateiname, | ||
| + | datei.writelines(liste_mit_strings) | ||
| + | </ | ||