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!