gpt4 book ai didi

python - 修改 Itertools.cycle()

转载 作者:太空宇宙 更新时间:2023-11-04 08:09:59 25 4
gpt4 key购买 nike

我目前正在使用 itertools.cycle() 对象,我想知道在创建循环后是否可以修改循环。以下内容:

my_cycle = itertools.cycle([1,2,3])
print my_cycle.next()
my_cycle.delete() #function doesn't exist
print my_cycle.next()

将有一个输出:

1
3

有什么办法可以通过itertools实现吗?或者也许是另一个对象?或者我是否需要实现自己的对象才能执行此操作。

最佳答案

Itertools 不提供这样的选项。您可以使用 deque 构建它:

from collections import deque

class ModifiableCycle(object):
def __init__(self, items=()):
self.deque = deque(items)
def __iter__(self):
return self
def __next__(self):
if not self.deque:
raise StopIteration
item = self.deque.popleft()
self.deque.append(item)
return item
next = __next__
def delete_next(self):
self.deque.popleft()
def delete_prev(self):
# Deletes the item just returned.
# I suspect this will be more useful than the other method.
self.deque.pop()

关于python - 修改 Itertools.cycle(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24438153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com