python - 反转 `pairwise` 生成器

标签 python generator python-itertools

我有一个类似于 itertools 的 pairwise 配方的生成器,它生成 (s0,s1), (s1,s2), (s2, s3)...。我想从中创建另一个生成器,生成原始序列 s0, s1, s2, s3,...

from itertools import *

def pairwise(iterable):
    a, b = tee(iterable)
    next(b, None)
    return izip(a, b)

a = [1,2,3,4]

for item in unpair(pairwise(a)):
   print item # should print 1,2,3,4

如何在不求助于列表的情况下将unpair 编写为生成器?

最佳答案

也许:

def unpair(iterable):
    p = iter(iterable)
    return chain(next(p, []), (x[1] for x in p))

关于python - 反转 `pairwise` 生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19563989/

相关文章:

Python:如何写入 fd 3?

python - 在 Scala 中实现 'yield' 的首选方法是什么?

java - 调试/查看 GWT 生成的 java 代码的源代码

python - 如何遍历字母和数字

python - 没有名为常量的模块

python - 将大文件从 .zip 存档写入 Pandas 数据帧

python - Scikit-learn 混淆矩阵

python - 从上下文管理器的语句和 __exit__ 方法中产生

python - 列表中带有 "distance limit"的独特组合

python - 如何使用 itertools 中的组合对象来查找我要输入的字符串的每种排列?