作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个列表,我希望能够按顺序返回每个项目,当它到达最后一个项目 (a7) 时,继续从头开始运行。一个额外的复杂性是脚本不会连续运行(它是手动停止和启动的)所以它需要以某种方式存储以前调用的项目,以便在下次运行脚本时它可以工作。
这是列表的摘录:
part_list = ['a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7']
脚本的基本逻辑是:
if var_one == var_two:
[return next item from part_list]
所以,第一次运行应该返回 a1,第二次运行应该返回 a2,第三次返回 a3,等等。
最佳答案
使用itertools.cycle
:
from itertools import cycle
part_cycle = cycle(['a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7'])
# below code is part of a function
if var_one == var_two:
return next(part_cycle)
n = 4 ## counter to save (could use a file, database, pickle, etc.)
## ensure that the type is int
part_list = ['a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7']
# below code is part of a function
if var_one == var_two:
n += 1
return part_list[n%len(part_list)]
# read the saved counter, or initialize
try:
with open('state.txt', 'r') as f:
idx = int(f.read().strip())
print(idx)
except FileNotFoundError:
idx = -1
part_list = ['a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7']
# this is the part where the computation is done
# replace it with your function
# the critical steps are:
# 1- to increase the counter
# 2- to slice using the modulo (part_list[idx%len(part_list)])
for i in range(10):
idx += 1
print(part_list[idx%len(part_list)])
# save the counter
with open('state.txt', 'w') as f:
f.write(f'{idx}')
关于python - 遍历列表并从头开始重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69991335/
我是一名优秀的程序员,十分优秀!