TutorialListen Inhalt

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:

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

Tutorial/Dictionary >>>

siehe auch

Andere Seiten zum Thema findest du in den entsprechenden Tags, hier:

Tags: Codesnippets | Grundlagen | Listen

Tutorial/Listen (zuletzt geändert am 2009-06-17 16:14:14 durch anonym)