我需要迭代一个循环列表,可能多次,每次从最后访问的项目开始.
用例是连接池.客户端请求连接,迭代器检查指向的连接是否可用并返回它,否则循环直到找到可用的连接.
有没有一种巧妙的方法在Python中做到这一点?
我想通过迭代器重复遍历列表(N次),以便不在列表中实际存储N个副本.有没有内置或优雅的方式来做到这一点,而无需编写自己的发电机?
理想情况下,itertools.cycle(my_list)会有第二个参数来限制它循环的次数...唉,没有这样的运气.
说你有这个:
foo = [1,2,3,4,5,6,7,8,9,10]
bar = 22
Run Code Online (Sandbox Code Playgroud)
我想按时间顺序打印一个数字,bar时间。所以,它应该使:
1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2
要做到这一点,你可以这样做
foo = [1,2,3,4,5,6,7,8,9,10]
bar = 22
x = 0
for i in range(bar):
print(foo[x])
# increment
if x == 9:
x = 0
# back to 1
else:
x += 1
Run Code Online (Sandbox Code Playgroud)
但是有没有更短的方法,不使用临时变量,x?