Inhalt
Contents
- Iterieren
- List Comprehensions - intelligentes Iterieren
- Indizieren - Element ansprechen
- index() - Position ermitteln
- append() - Element anhängen
- del - Element über Index löschen
- remove() - Element über Wert löschen
- len() - Anzahl der Elemente
- zip() - Zwei Listen verknüpfen
- reverse() - Liste umdrehen
- weiter
- siehe auch
Iterieren
1 l = [1, 2, 3, 4, 5]
2 for i in l:
3 print i
Ausgabe:
1 2 3 4 5
List Comprehensions - intelligentes Iterieren
1 l = [1, 2, 3, "4a", "5b", "6c"]
2 print l
3 neueListe = ["X%sX" % i for i in l]
4 print neueListe
Ergebnis:
[1, 2, 3, '4a', '5b', '6c'] ['X1X', 'X2X', 'X3X', 'X4aX', 'X5bX', 'X6cX']
Mehr über "List Comprehensions": http://www.secnetix.de/~olli/Python/list_comprehensions.hawk
Indizieren - Element ansprechen
1 l = [1, 2, 3, "4a", "5b", "6c"]
2 print l[0] # Erstes Element
3 print l[-1] # Letztes Element
4 print l[3:5] # Teilbereich
5 print l[::-1] # Die ganze Liste, umgedreht
Ergebnis:
1 6c ['4a', '5b'] ["6c", "5b", "4a", 3, 2, 1]
index() - Position ermitteln
liste.index(x) gibt den Index des ersten Vorkommens von x zurück. Enthält die Liste x nicht, wird ein ValueError ausgelöst. Mit einem zweiten Parameter kann angegeben werden, ab welchem Element und mit einem dritten Parameter, bis zu welchem Element (exklusive) gesucht werden soll.
1 l = ["a", "b", "c", "x", "c", "y", "z", "c"]
2 pos = l.index("b")
3 print pos, l[pos]
4
5 # findet das erste "c"
6 pos = l.index("c")
7 print pos
8
9 # sucht erst ab "x", findet das zweite "c"
10 pos = l.index("c", 3)
11 print pos
12
13 # sucht ab "y", aber nur bis "z", findet nichts mehr
14 pos = l.index("c", 5, 7)
Ausgabe:
1 b
2
4
Traceback (most recent call last):
File "test.py", line 14, in ?
pos = l.index("c",5,7)
ValueError: list.index(x): x not in list
append() - Element anhängen
Ein Element an Liste anhängen:
1 r = l.append("Noch ein Eintrag dazu")
2 print l
3 print r
Ergebnis:
[1, 2, 3, '4a', '5b', '6c', 'Noch ein Eintrag dazu'] None
Achtung: Wie man sieht, verändert append() die Liste und gibt None zurück.
del - Element über Index löschen
Mittels del kann man gezielt Elemente einer Liste anhand von Indizes löschen:
1 del l[3:5]
2 print l
Ergebnis:
[1, 2, 3, '6c', 'Noch ein Eintrag dazu']
remove() - Element über Wert löschen
s.remove(x) ist eine Abkürzung für del s[s.index(x)]:
1 le.remove("6c")
2 print teste_liste
Ergebnis:
[1, 2, 3, 'Noch ein Eintrag dazu']
len() - Anzahl der Elemente
1 print len(l)
Ergebnis:
4
zip() - Zwei Listen verknüpfen
1 >>> l1 = ["b", "a", "c"]
2 >>> l2 = [2, 3, 1]
3 >>> ergebnis = zip(l1, l2)
4 >>> ergebnis
5 [('b', 2), ('a', 3), ('c', 1)]
6 >>> sorted(ergebnis)
7 [('a', 3), ('b', 2), ('c', 1)]
8 # Die folgenden zwei Möglichkeiten sind äquivalent
9 >>> sorted(ergebnis, key=lambda x: x[1])
10 [('c', 1), ('b', 2), ('a', 3)]
11 >>> import operator
12 >>> sorted(ergebnis, key=operator.itemgetter(1))
13 [('c', 1), ('b', 2), ('a', 3)]
reverse() - Liste umdrehen
Mit reverse() kann man die Reihenfolge der Elemente einer Liste umdrehen.
1 l = [1,2,3,4]
2 print l
3 l.reverse()
4 print l
5 print "in place:", l.reverse()
6 print l
Ergebnis:
[1, 2, 3, 4] [4, 3, 2, 1] in place: None [1, 2, 3, 4]
reverse arbeitet "in place", d.h. es wird keine neue Liste generiert und zurück geliefert (dafür gibt es die Built-In-Funktion reversed()), sondern die bestehende Liste wird nur "umgekehrt". Deswegen gibt die print-Ausgabe mit "in place" auch ein None zurück. Es funktioniert also nicht so: neueliste = alteliste.reverse() (neueliste wäre also == None!).
weiter
siehe auch
Andere Seiten zum Thema findest du in den entsprechenden Tags, hier: