在python中迭代元组中的生成器

use*_*095 2 python generator lazy-evaluation

假设我有一个清单

xs = [0,1,2,3]
[some_function(current, next) for current, next in zip(xs, xs[1:])]
Run Code Online (Sandbox Code Playgroud)

我想迭代这个列表的对(当前,下一个).澄清zip创建列表[(0,1),(1,2),(2,3)]

问题是,如果xs是生成器而不是列表来实现这一点,我需要从中创建一个列表,这肯定不是最佳解决方案.

Kas*_*mvd 7

您可以使用itertools.tee(iterable, n=2)它从一个迭代器创建多个独立迭代器.

my_iter, next_iter = tee(myiter)
next(nextiter)

[some_function(current, ne) for current, ne in zip(myiter, nextiter)]
Run Code Online (Sandbox Code Playgroud)