Utilice la lista como condición booleano que será evaluado False
sólo si la lista está vacía:
>>> while a:
... print a.pop()
...
4
3
2
1
Esto no sólo es más concisa, es también más eficientes (1.49ms vs 1.9ms para una lista de 10.000), ya que sólo tiene que comprobar si hay un primer elemento:
$ 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
también puede utilizar reversed()
para obtener un iterador inverso:
>>> for n in reversed(a):
... print n
...
4
3
2
1
O en una sola línea:
print '\n'.join(map(str, reversed(a)))
Tenga en cuenta que esto no eliminar los elementos de la lista. Si es necesario, puede lograrlo con del a[:]
.
¿Qué desea hacer ¿exactamente? Imprimir al revés? – ismail