从python中的迭代对象创建带有一组树的迭代对象

时间:2019-03-18 03:32:32

标签: python python-3.x

如何从一个迭代对象创建三个迭代组?为了创建一对迭代函数,我可以做类似的事情     从itertools import tee

def func(iterate):
    i, j = tee(iterate)
    next(j, None)
    return zip(i, j)

l = [1,2,3,4,5]
for a, b in func(l):
    print(a, b)
> 1, 2
> 2, 3
> 3, 4
> 4, 5

2 个答案:

答案 0 :(得分:1)

您可以扩展已经进行的两个一组的操作,但是第三项还有一个变量:

def func(iterate):
    i, j, k = tee(iterate, 3)
    next(j, None)
    next(k, None)
    next(k, None)
    return zip(i, j, k)

l = [1,2,3,4,5]
for a, b, c in func(l):
    print(a, b, c)

这将输出:

1 2 3
2 3 4
3 4 5

请注意,您问题中的示例代码不正确,因为它缺少从zip返回的值中对func的调用。

答案 1 :(得分:0)

使用zip()

l = [1,2,3,4,5]

for a, b, c in zip(l, l[1:], l[2:]):
    print(a, b, c)

# 1 2 3
# 2 3 4
# 3 4 5

您还可以使用此方法创建两个一组:

l = [1,2,3,4,5]

for a, b in zip(l, l[1:]):
    print(a, b)

# 1 2
# 2 3
# 3 4
# 4 5