Saltar al contenido

Iterador de lista circular en Python

Mantén la atención porque en este escrito encontrarás el arreglo que buscas.Esta sección ha sido evaluado por nuestros expertos para garantizar la calidad y exactitud de nuestro post.

Solución:

Usar itertools.cycleese es su propósito exacto:

from itertools import cycle

lst = ['a', 'b', 'c']

pool = cycle(lst)

for item in pool:
    print item,

Producción:

a b c a b c ...

(Bucles para siempre, obviamente)


Para avanzar manualmente el iterador y extraer valores de él uno por uno, simplemente llame next(pool):

>>> next(pool)
'a'
>>> next(pool)
'b'

La respuesta correcta es usar itertools.cycle. Pero supongamos que la función de biblioteca no existe. ¿Cómo lo implementarías?

Usa un generador:

def circular():
    while True:
        for connection in ['a', 'b', 'c']:
            yield connection

Entonces, puede usar un for declaración para iterar infinitamente, o puede llamar next() para obtener el siguiente valor único del iterador del generador:

connections = circular()
next(connections) # 'a'
next(connections) # 'b'
next(connections) # 'c'
next(connections) # 'a'
next(connections) # 'b'
next(connections) # 'c'
next(connections) # 'a'
#....

O puedes hacer así:

conn = ['a', 'b', 'c', 'd', 'e', 'f']
conn_len = len(conn)
index = 0
while True:
    print(conn[index])
    index = (index + 1) % conn_len

imprime abcdefab c… para siempre

Eres capaz de auxiliar nuestro quehacer exponiendo un comentario y valorándolo te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *