Maison  >  Article  >  développement back-end  >  Comment `zip([iter(s)]*n)` fragmente-t-il une liste en Python ?

Comment `zip([iter(s)]*n)` fragmente-t-il une liste en Python ?

DDD
DDDoriginal
2024-11-24 22:26:15647parcourir

How does `zip([iter(s)]*n)` Chunk a List in Python?

Zip pour les listes fragmentées : comprendre zip([iter(s)]n)

Le zip() La fonction est un outil puissant en Python qui combine des éléments de plusieurs itérables dans une liste de tuples. Son utilité s'étend à diverses applications, notamment la division de listes en morceaux de taille égale. L'expression zip([iter(s)]n) est un moyen concis d'y parvenir.

Pour comprendre le fonctionnement de cette expression, décomposons-la en ses composants :

  • iter(s): Cela crée un itérateur sur la liste s, nous permettant de parcourir ses éléments un par un.
  • [iter(s)]*n : Cette ligne crée une liste de n copies de l'itérateur, fournissant effectivement n vues dans la même liste.
  • * : L'opérateur astérisque (ou splat) décompresse la liste des itérateurs en arguments individuels pour zip().

En conséquence, zip() est invoqué avec n itérateurs, chacun représentant la même liste. Cela amène zip() à extraire un élément de chaque itérateur, créant ainsi un tuple. Le processus continue jusqu'à ce que tous les itérateurs soient épuisés, ce qui donne une liste de tuples.

Pour illustrer, considérons un exemple avec une liste s = [1,2,3,4,5,6,7,8 ,9] et n = 3. L'expression zip([iter(s)]n) produirait [(1,2,3),(4,5,6),(7,8,9)].

Si nous développons l'expression dans un code plus détaillé, cela ressemblerait à ceci :

x = iter(s)
y = iter(s)
z = iter(s)
chunked_list = list(zip(x, y, z))

Ce code produit le même résultat que l'expression concise zip([iter(s)]n). Essentiellement, iter() crée un itérateur, [iter(s)]*n génère plusieurs vues dans la même liste et l'opérateur splat décompresse les itérateurs, permettant à zip() de combiner les éléments de chacun en tuples.

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