Python中的循环列表迭代器
问题内容:
我需要遍历一个循环列表,每次从最后一次访问的项目开始,可能要多次。
用例是一个连接池。客户端请求连接,迭代器检查指向的连接是否可用并返回,否则循环直到找到可用的连接。
有没有一种精巧的方法可以在Python中做到这一点?
问题答案:
使用itertools.cycle
,这是其确切目的:
from itertools import cycle
lst = ['a', 'b', 'c']
pool = cycle(lst)
for item in pool:
print item,
输出:
a b c a b c ...
(显然,永远循环)
为了手动推进迭代器并一一拉出迭代器的值,只需调用next(pool)
:
>>> next(pool)
'a'
>>> next(pool)
'b'