假设我有一个元组生成器,我模拟如下:
g = (x for x in (1,2,3,97,98,99))
对于这个特定的生成器,我希望编写一个函数来输出以下内容:
(1,2,3)
(2,3,97)
(3,97,98)
(97,98,99)
(98,99)
(99)
所以我一次迭代三个连续的项目并打印它们,除非我接近尾声。
我的函数的第一行应该是:
t = tuple(g)
换句话说,最好直接处理元组还是使用生成器可能有益。如果可以同时使用这两种方法来解决这个问题,请说明两种方法的优缺点。此外,如果使用生成器方法可能是明智的,那么这样的解决方案看起来如何?
这是我目前所做的:
def f(data, l):
t = tuple(data)
for j in range(len(t)):
print(t[j:j+l])
data = (x for x in (1,2,3,4,5))
f(data,3)
更新:
请注意,我已经更新了我的函数以采用第二个参数来指定窗口的长度。