Użyj listy jako logicznego stanu, który ocenia się False
tylko wtedy, gdy lista jest pusta:
>>> while a:
... print a.pop()
...
4
3
2
1
Nie tylko jest to bardziej zwięzłe, jest również bardziej wydajne (1.49ms vs 1.9ms do listy 10000), ponieważ ma tylko w celu sprawdzenia, czy jest pierwszy element:
$ python -mtimeit -c 'a=range(10000)
while len(a):
a.pop()'
10000 loops, best of 3: 1.9 msec per loop
$ python -mtimeit -c 'a=range(10000)
while a:
a.pop()'
1000 loops, best of 3: 1.49 msec per loop
można również użyć reversed()
uzyskać odwrotny iterator:
>>> for n in reversed(a):
... print n
...
4
3
2
1
Lub w jednym wierszu:
print '\n'.join(map(str, reversed(a)))
Zauważ, że to nie będzie usunięcia elementów z listy. Jeśli to konieczne, możesz to osiągnąć za pomocą del a[:]
.
Co chcesz zrobić dokładnie? Drukować na odwrót? – ismail