Comment créer un groupe de trois itérations à partir d'un objet itération? Pour créer une paire de fonctions d'itération, je peux faire quelque chose comme à partir d'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
3
A.Lee 18 mars 2019 à 06:32

2 réponses

Meilleure réponse

Vous pouvez développer ce que vous avez déjà fait pour des groupes de deux, mais avec une variable de plus pour le troisième élément:

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)

Cela produit:

1 2 3
2 3 4
3 4 5

Notez que votre exemple de code dans la question est incorrect car il manque un appel à zip dans la valeur renvoyée par func.

1
blhsing 18 mars 2019 à 04:55

Utilisez 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

Vous pouvez également créer des groupes de deux avec cette méthode:

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
0
Austin 18 mars 2019 à 03:36