[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