it-swarm.com.de

Durchlaufen Sie die Liste mit Inhalt und Index

Es ist sehr üblich, dass ich eine python liste durchlaufe, um den Inhalt nd ihrer Indizes zu erhalten. In der Regel mache ich Folgendes:

S = [1,30,20,30,2] # My list
for s, i in Zip(S, range(len(S))):
    # Do stuff with the content s and the index i

Ich finde diese Syntax etwas hässlich, besonders den Teil innerhalb der Zip -Funktion. Gibt es dafür elegantere/pythonischere Methoden?

90
Oriol Nieto

Verwenden Sie die integrierte Funktion enumerate: http://docs.python.org/library/functions.html#enumerate

62
BrenBarn

Verwenden Sie enumerate() :

>>> S = [1,30,20,30,2]
>>> for index, elem in enumerate(S):
        print(index, elem)

(0, 1)
(1, 30)
(2, 20)
(3, 30)
(4, 2)
166

Wie jeder andere:

for i, val in enumerate(data):
    print i, val

aber auch

for i, val in enumerate(data, 1):
    print i, val

Mit anderen Worten, Sie können als Startwert für den Index/die Zählung angeben, der/die durch Aufzählung ( ) das ist praktisch, wenn Sie nicht möchten, dass Ihr Index mit Standardwert von Null beginnt.

Ich habe neulich Zeilen in einer Datei ausgedruckt und den Startwert als 1 für enumerate() angegeben, was sinnvoller als 0 war, wenn dem Benutzer Informationen zu einer bestimmten Zeile angezeigt wurden.

21
Levon

enumerate ist was Sie wollen:

for i, s in enumerate(S):
    print s, i
3
Adam Wagner
>>> for i, s in enumerate(S):
3
fraxel

enumerate() macht das schöner:

for index, value in enumerate(S):
    print index, value

Siehe hier für mehr.

3
Rob Volgman