我有一个列表,我想从元素 1 到末尾迭代它,然后以元素 0 结束。即,本质上它是基本列表迭代,除了第一个元素应该位于末尾。
我可以这样做for i in range(len(myList)):,然后将 1 添加到 i 并检查边缘情况(这就是我在 C++ 中所做的),但想知道 Python 是否有一些语法可以使这个概念更容易表达?
我不认为有一个方便的语法,但您可以轻松定义自己的语法:我irotate通过类比itertools.islice选择了名称,并以可提供一次性使用的方式编写它可迭代,例如生成器表达式。
def irotate(iterable, k=1):
iterator = iter(iterable)
initial_elements = [next(iterator) for _ in range(k)]
yield from iterator
yield from initial_elements
Run Code Online (Sandbox Code Playgroud)
用法示例:
>>> list(irotate(range(5)))
[1, 2, 3, 4, 0]
>>> for x in irotate(y**2 for y in range(5)): print(x)
...
1
4
9
16
0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
702 次 |
| 最近记录: |