python - itertools cycle() 似乎没有开始索引。什么是让循环从 0 以外的任意索引开始的好方法?
问题描述
Pythonitertools cycle()
似乎没有使用起始索引。从 0 以外的序列中的任意位置开始的最佳方法是什么cycle()
,同时确保循环遍历序列的所有元素?
解决方案
您可以使用itertools.islice()
移动到您想要开始的位置:
from itertools import cycle, islice
l = [1, 2, 3, 4, 5]
c = islice(cycle(l), 2, None)
[next(c) for i in range(10)]
# [3, 4, 5, 1, 2, 3, 4, 5, 1, 2]
另一种选择是在你的周期前加上itertools.chain
:
from itertools import cycle, chain
l = [1, 2, 3, 4, 5]
c = chain(l[2:], cycle(l))
[next(c) for i in range(10)]
# [3, 4, 5, 1, 2, 3, 4, 5, 1, 2]
推荐阅读
- google-sheets - 插入行时更新所有列公式
- mpi - ImportError:导入 MPI 时 DLL 加载失败
- tally - 是否有任何解决方案可以将数据同时插入到 Tally ERP 9 中的多个公司?
- vba - 在 Word 中切换日期选择器内容控件的区域设置
- reactjs - 在 xampp 清单中运行的反应构建文件错过了
- reactjs - Axios to get data from database
- authorization - 自动授权令牌生成空值
- javascript - Html - Google 未定义
- c - 如何在 c 中使用 strcpy 更改字符串值
- discord - Discord.js 无法读取未定义的属性“角色”