[pyar] Lista rotativa que siempre devuelve un item
claudio canepa
ccanepacc en gmail.com
Sab Jun 11 04:26:59 ART 2011
2011/6/11 Pablo Seminario <pabluk en gmail.com>
> Hola a todos,
>
> Ayer tuve un duda sobre un problema que tenía que resolver con una lista de
> valores que uso dentro de un bucle for/while(que no depende de los valores
> de la lista), y para la cual siempre tengo que extraer un valor de la lista,
> pero en cada ciclo del bucle tengo que obtener el elemento que sigue al del
> ciclo anterior, excepto si es el fin de la lista y en ese caso re comienza
> con el primer elemento de la lista.
> Mas o menos sería como tener una estructura queue pero rotanto los
> elementos de la lista.
> Acá esta un ejemplo de como lo resolví por ahora:
>
>
> lista = ['a', 'b', 'c']
>
> for i in range(10):
> item = lista.pop()
> lista.insert(0, item)
>
> print item
>
>
> La pregunta es si hay alguna forma mas pythonica de resolverlo?
>
> Saludos
>
> --
>
Depende de cuales son los valores que necesites en el bucle.
si lo unico que importa es item, haria
for i in xrange(10):
item = lista[i%len(lista)]
print item
que ahorra sacar e insertar en la lista (insertar es caro para list si estas
lejos del final).
Si el valor que necesitas es la lista, usaria deque del modulo collections ,
es de la libreria standard desde python 2.4
Para rotar se usa el metodo rotate de la deque.
--
claudio
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110611/6ec31d89/attachment.html>
More information about the pyar
mailing list