使生成器在容器中无限次循环的最佳实践

2024-03-28 22:44:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用生成器从容器返回元素,但它需要返回/耗尽所有元素,然后再执行一次

我这么说的原因是,如果有一种比for循环更快/更好或更具python风格的方法来实现这一点,因为我不需要按顺序使用它们,但我不想在用尽所有元素之前获取相同的项两次

下面的例子是一个元组,不过如果有更好的容器类型的话

elements = ('a', 'b', 'c', ...)

def get_next_element():
    while True:
        for e in elements:
            yield e

一定有不同的方法,还是这是最好的方法

我使用的是python3.6


Tags: 方法元素类型forget顺序风格def
1条回答
网友
1楼 · 发布于 2024-03-28 22:44:25

使用^{} callable,它只执行以下操作:

Make an iterator returning elements from the iterable and saving a copy of each. When the iterable is exhausted, return elements from the saved copy. Repeats indefinitely.

这正是纯python函数所做的,而且它缓存元素,这样输入就可以是任何迭代器(不仅仅是一个可重用的iterable,比如元组),而且在高效的C中也是如此

相关问题 更多 >