1053 Stimmen

Durchlaufen einer Liste in umgekehrter Reihenfolge in Python

Ich kann also beginnen mit collection[len(collection)-1] und enden mit collection[0] .

Ich möchte auch auf den Schleifenindex zugreifen können.

2voto

Malcolm Punkte 500

Sie können einen negativen Index in einer gewöhnlichen for-Schleife verwenden:

>>> collection = ["ham", "spam", "eggs", "baked beans"]
>>> for i in range(1, len(collection) + 1):
...     print(collection[-i])
... 
baked beans
eggs
spam
ham

Um auf den Index zuzugreifen, als ob Sie vorwärts über eine umgekehrte Kopie der Sammlung iterieren würden, verwenden Sie i - 1 :

>>> for i in range(1, len(collection) + 1):
...     print(i-1, collection[-i])
... 
0 baked beans
1 eggs
2 spam
3 ham

Um auf den ursprünglichen, nicht umgedrehten Index zuzugreifen, verwenden Sie len(collection) - i :

>>> for i in range(1, len(collection) + 1):
...     print(len(collection)-i, collection[-i])
... 
3 baked beans
2 eggs
1 spam
0 ham

2voto

stroz Punkte 1772

Um negative Indizes zu verwenden: beginnen Sie bei -1 und gehen Sie bei jeder Iteration um -1 zurück.

>>> a = ["foo", "bar", "baz"]
>>> for i in range(-1, -1*(len(a)+1), -1):
...     print i, a[i]
... 
-1 baz
-2 bar
-3 foo

1voto

Varun Maurya Punkte 327
input_list = ['foo','bar','baz']
for i in range(-1,-len(input_list)-1,-1)
    print(input_list[i])

Ich denke, dies ist auch einfacher Weg, es zu tun... lesen Sie vom Ende und halten Sie dekrementieren, bis die Länge der Liste, da wir nie das "Ende" Index daher hinzugefügt -1 auch ausführen

1voto

fedmich Punkte 5285

Die anderen Antworten sind gut, aber wenn Sie so vorgehen wollen Stil des Listenverständnisses

collection = ['a','b','c']
[item for item in reversed( collection ) ]

1voto

Suuuehgi Punkte 3458

Ich bin verwirrt, warum die offensichtliche Wahl bis jetzt nicht aufgetaucht ist:

もし reversed() nicht funktioniert, weil Sie einen Generator haben (wie im Fall von enumerate() ), verwenden Sie einfach sorted() :

>>> l = list( 'abcdef' )
>>> sorted( enumerate(l), reverse=True )
[(5, 'f'), (4, 'e'), (3, 'd'), (2, 'c'), (1, 'b'), (0, 'a')]

CodeJaeger.com

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.

Powered by:

X