Ich kann also beginnen mit collection[len(collection)-1]
und enden mit collection[0]
.
Ich möchte auch auf den Schleifenindex zugreifen können.
Ich kann also beginnen mit collection[len(collection)-1]
und enden mit collection[0]
.
Ich möchte auch auf den Schleifenindex zugreifen können.
Verwenden Sie die integrierte reversed()
Funktion:
>>> a = ["foo", "bar", "baz"]
>>> for i in reversed(a):
... print(i)
...
baz
bar
foo
Um auch auf den ursprünglichen Index zuzugreifen, verwenden Sie enumerate()
auf Ihrer Liste, bevor Sie sie an reversed()
:
>>> for i, e in reversed(list(enumerate(a))):
... print(i, e)
...
2 baz
1 bar
0 foo
Desde enumerate()
einen Generator zurückgibt und Generatoren nicht umgedreht werden können, müssen Sie ihn in einen list
Erstens.
Das kann so gemacht werden:
for i in range(len(collection)-1, -1, -1):
print collection[i]
# print(collection[i]) for python 3. +
Deine Vermutung war also ziemlich genau :) Ein wenig umständlich, aber im Grunde heißt es: Beginne mit 1 weniger als len(collection)
weiter, bis Sie kurz vor -1 sind, in Schritten von -1.
Zu Ihrer Information, die help
Funktion ist sehr nützlich, da sie es Ihnen ermöglicht, die Dokumentationen für etwas von der Python-Konsole aus einzusehen, z.B:
help(range)
Wenn Sie den Schleifenindex benötigen und nicht die gesamte Liste zweimal durchlaufen oder zusätzlichen Speicher verwenden wollen, würde ich einen Generator schreiben.
def reverse_enum(L):
for index in reversed(xrange(len(L))):
yield index, L[index]
L = ['foo', 'bar', 'bas']
for index, item in reverse_enum(L):
print index, item
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.