【发布时间】:2023-03-20 11:38:01
【问题描述】:
我正面临这个问题,我希望你们中的一些人可以帮忙:
编写一个接受可迭代和正数 n 的函数。该函数返回一个新的迭代器,它以长度为 n 的元组给出原始值。如果最后一个元组需要,用“None”填充缺失值。
例如:
for x in bunch_together(range(10),3): print(x)
返回值为
(0, 1, 2)
(3, 4, 5)
(6, 7, 8)
(9, None, None)
这是我目前想出的:
def bunch_together(iterable,n):
tup = tuple()
for item in iterable:
for i in range(n):
tup += (i,)
yield tup
但这显然不起作用,因为我根本没有考虑范围(现在的输出看起来像这样:
(0, 1, 2)
(0, 1, 2, 0, 1, 2)
(0, 1, 2, 0, 1, 2, 0, 1, 2)
...#(goes on)
我可以创建一个生成器来构建一个迭代器(就像构建一个由 init iter 和 next 组成的类) 谢谢您的帮助!
【问题讨论】:
-
请注意,the duplicates 实际上比您的情况更复杂(他们试图避免填充值)。由于您可以使用填充值,the
grouperrecipe from theitertoolsdocs 基本上正是您所需要的。
标签: python iterator generator yield iterable