我正在尝试实现一个方法,其中列表的每个元素都得到了与参数说的一样多:
def rgen (n):
for elem in list:
yield elem
当我打电话给rgen(2)时,我想将该列表的每个元素两次等等。 但我怎么能真正实现呢?
答案 0 :(得分:10)
再次循环:
def rgen (n):
for elem in list:
for times in xrange(n):
yield elem
我可能会写一个类似于:
的辅助函数from itertools import chain, repeat
def repeated(iterable, n=1):
items = chain.from_iterable(repeat(item, n) for item in iterable)
for item in items:
yield item
# Or, in Python3.3 you could do:
yield from items