Maison >développement back-end >Tutoriel Python >Comment puis-je parcourir des paires (ou des groupes) d'éléments dans une liste Python ?

Comment puis-je parcourir des paires (ou des groupes) d'éléments dans une liste Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-10 15:55:13713parcourir

How Can I Iterate Over Pairs (or Groups) of Elements in a Python List?

Itération sur des paires d'éléments dans une liste

Lors de l'itération sur une liste, nous rencontrons souvent des situations où nous avons besoin d'accéder à deux éléments à un temps. Pour résoudre ce problème, nous pouvons utiliser le concept d'itération par paire.

La fonction zip() intégrée de Python peut nous aider à cet égard. La méthode pairwise() ou grouped() consomme un itérable et produit des sous-séquences successives de deux éléments. Voici comment nous pouvons l'implémenter :

def pairwise(iterable):
    "s -> (s0, s1), (s2, s3), (s4, s5), ..."
    a = iter(iterable)
    return zip(a, a)

À l'aide de cette fonction, considérons la liste [1, 2, 3, 4, 5, 6]. Pour démontrer l'itération par paire :

for x, y in pairwise(l):
   print("%d + %d = %d" % (x, y, x + y))

Cela produira le résultat suivant :

1 + 2 = 3
3 + 4 = 7
5 + 6 = 11

Alternativement, la fonction grouped() nous permet d'itérer sur n éléments à la fois. Voici une implémentation :

def grouped(iterable, n=2):
    "s -> (s0,s1,s2,...sn-1), (sn,sn+1,sn+2,...s2n-1), (s2n,s2n+1,s2n+2,...s3n-1), ..."
    return zip(*[iter(iterable)] * n)

Par exemple, avec n défini sur 3, nous pouvons parcourir trois éléments à la fois :

for x, y, z in grouped(l, 3):
   print("%d + %d + %d = %d" % (x, y, z, x + y + z))

Cette approche est efficace car elle parcourt le lister une seule fois et élimine le besoin de listes intermédiaires.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn