在迭代器中复制每个成员

Ton*_*bda 1 python iterator

给定一个迭代器i,我想要一个迭代器,它产生每个元素的n次数,即相当于这个函数

def duplicate(i, n):
    for x in i:
        for k in range(n):
            yield x
Run Code Online (Sandbox Code Playgroud)

这有一个单行吗?

相关问题:复制列表中的每个成员 - python,但zip解决方案在这里不起作用.

Hos*_*dir 6

如果您想要同时复制每个元素,这是我的简单解决方案.它返回一个生成器表达式,它应该是内存有效的.

def duplicate(i, n):
    return (k for k in i for j in range(n))
Run Code Online (Sandbox Code Playgroud)

一个示例用法可能是,

print (list(duplicate(range(1, 10), 3)))
Run Code Online (Sandbox Code Playgroud)

哪个印刷品,

[1,1,1,2,2,3,3,3,4,4,5,5,5,6,6,6,7,7,7,8,8,8,9,9 ,9,9]

  • 哦,我可能错了:http://stackoverflow.com/questions/1995418/python-generator-expression-vs-yield (2认同)