Maison >développement back-end >Tutoriel Python >Comment puis-je parcourir des listes par paires ou par groupes en Python ?

Comment puis-je parcourir des listes par paires ou par groupes en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-25 10:53:50191parcourir

How Can I Iterate Over Lists in Pairs or Groups in Python?

Itération par paires sur les listes

Itérer sur des éléments par paires est une exigence courante lors de la manipulation de listes. Cependant, la norme pour les boucles et les compréhensions de listes en Python ne fournit pas de solution intégrée pour le parcours par paire.

Implémentation par paires

Pour surmonter cette limitation, un une fonction personnalisée appelée pairwise() peut être implémentée. Cette fonction prend un itérable en entrée et renvoie des paires d'éléments.

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

Utilisation

En utilisant cette fonction pairwise(), vous pouvez parcourir les éléments par paires comme suit :

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

for x, y in pairwise(l):
    print("{} + {} = {}".format(x, y, x + y))

Sortie :

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

Regroupement généralisé

Pour les cas où vous devez parcourir éléments en groupes de n'importe quelle taille, une fonction plus généralisée appelée grouped() peut être utilisé.

def grouped(iterable, n):
    "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)

Utilisation

for x, y in grouped(l, 2):
    print("{} + {} = {}".format(x, y, x + y))

Vérification de type avec Mypy

Pour les utilisateurs de Python 3 souhaitant effectuer vérification de type avec Mypy, la fonction grouped() peut être annotée comme suit :

from typing import Iterable, Tuple, TypeVar

T = TypeVar("T")

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

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