Maison > développement back-end > Tutoriel Python > Comment puis-je parcourir avec élégance une liste en Python en morceaux de taille spécifique ?

Comment puis-je parcourir avec élégance une liste en Python en morceaux de taille spécifique ?

DDD
Libérer: 2024-12-18 20:56:20
original
830 Les gens l'ont consulté

How Can I Elegantly Iterate Through a List in Python in Specific-Sized Chunks?

Chnks élégants : itérer une liste en groupes

Itérer sur une liste en morceaux de taille spécifique peut être une tâche courante dans la programmation Python. Si la liste contient des éléments à traiter dans des groupes prédéfinis, l'approche typique peut ressembler au code fourni :

for i in range(0, len(ints), 4):
    # Placeholder operation for illustrative purposes
    foo += ints[i] * ints[i + 1] + ints[i + 2] * ints[i + 3]
Copier après la connexion

Bien que cette approche puisse répondre aux exigences fonctionnelles, elle peut sembler plutôt maladroite et non pythonique. Cet article explore une solution plus élégante et idiomatique utilisant une fonction de générateur personnalisée :

def chunker(seq, size):
    return (seq[pos:pos + size] for pos in range(0, len(seq), size))
Copier après la connexion

Cette fonction de générateur, chunker, divise élégamment la séquence d'entrée en morceaux de la taille spécifiée, offrant un moyen rationalisé de parcourir eux. L'expression du générateur dans chunker produit chaque morceau, en commençant par le début de la séquence et en avançant en fonction de la taille du morceau jusqu'à ce qu'il atteigne ou dépasse la fin de la séquence.

Voici un exemple démontrant la polyvalence de la fonction chunker :

text = "I am a very, very helpful text"

for group in chunker(text, 7):
   print(repr(group),)
Copier après la connexion

Sortie :

'I am a ' 'very, v' 'ery hel' 'pful te' 'xt'
Copier après la connexion

Cet exemple décompose la chaîne de texte en groupes de 7 caractères chacun. De même, il peut être utilisé avec tout type de séquence, y compris des listes d'animaux ou même des structures de données arbitraires.

Dans Python 3.12 et versions ultérieures, la fonction chunker peut être encore simplifiée à l'aide de la fonction itertools.tee() :

from itertools import tee

def chunker(seq, size):
    a, b = tee(seq, 2)
    return (list(islice(a, i, None, size)) for i in range(size))
Copier après la connexion

Cette variante de la fonction évite de créer une liste intermédiaire et opère directement sur la séquence d'entrée, mettant en évidence la puissance des fonctions intégrées de Python pour travailler avec itérables.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal