Skip to main content
 首页 » 编程设计

python之复制迭代器中的每个成员

2025年05月04日8pengyingh

给定一个迭代器 i,我想要一个生成每个元素 n 次的迭代器,即等效于此函数

def duplicate(i, n): 
    for x in i: 
        for k in range(n): 
            yield x 

有单线的吗?

相关问题:duplicate each member in a list - python , 但 zip 解决方案在这里不起作用。

请您参考如下方法:

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

def duplicate(i, n): 
    return (k for k in i for j in range(n)) 

一个示例用法可以是,

print (list(duplicate(range(1, 10), 3))) 

打印,

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