Nehmen wir an, ich habe eine Liste wie diese:
mylist = ["a","b","c","d"]
Um die Werte zusammen mit ihrem Index zu drucken, kann ich die Python- enumerate
Funktion wie folgt verwenden
>>> for i,j in enumerate(mylist):
... print i,j
...
0 a
1 b
2 c
3 d
>>>
Wenn ich jetzt versuche, es in einem zu verwenden list comprehension
, gibt es mir diesen Fehler
>>> [i,j for i,j in enumerate(mylist)]
File "<stdin>", line 1
[i,j for i,j in enumerate(mylist)]
^
SyntaxError: invalid syntax
Meine Frage lautet also: Wie wird die Aufzählung innerhalb des Listenverständnisses richtig verwendet?
python
list
iteration
list-comprehension
RanRag
quelle
quelle
,
nicht der gebaut wird()
. "i,j
In ein Tupel stecken" macht also keinen Sinn, dai,j
es bereits ein Tupel ist! Das Problem ist, dass der Listencomputer die Parens für die Anweisungsgruppe benötigt.Um ganz klar zu sein, hat dies nichts
enumerate
mit der Syntax des Listenverständnisses zu tun.Dieses Listenverständnis gibt eine Liste von Tupeln zurück:
Dies ist eine Liste von Diktaten:
eine Liste von Listen:
ein Syntaxfehler:
Was inkonsistent (IMHO) und verwirrend mit der Syntax des Wörterbuchverständnisses ist:
Und eine Reihe von Tupeln:
Wie Óscar López sagte, können Sie das Aufzählungstupel einfach direkt übergeben:
quelle
Oder wenn Sie nicht darauf bestehen, ein Listenverständnis zu verwenden:
quelle
Wenn Sie lange Listen verwenden, scheint das Listenverständnis schneller zu sein, ganz zu schweigen von der besseren Lesbarkeit.
quelle
[t for t in enumerate(my list)]
ist noch schneller.Hier ist eine Möglichkeit, dies zu tun:
Alternativ können Sie Folgendes tun:
Der Grund, warum Sie einen Fehler erhalten haben, war, dass Sie das () verpasst haben
i
undj
es zu einem Tupel gemacht haben.quelle
Seien Sie explizit über die Tupel.
quelle
Alles tolle Antwort Jungs. Ich weiß, dass die Frage hier spezifisch für die Aufzählung ist, aber wie wäre es mit so etwas, nur einer anderen Perspektive
Es wird leistungsfähiger, wenn mehrere Listen in Bezug auf die Leistung parallel durchlaufen werden müssen. Nur ein Gedanke
quelle