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.cycle
ese 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.