En Python, la fonction zip() combine des éléments de plusieurs itérables en un seul itérable de tuples. Lorsqu'il est utilisé avec la syntaxe zip([iter(s)]n), il offre un moyen pratique de diviser une liste en morceaux de taille égale.
Comment ça marche :
L'expression [iter(s)]n crée une liste contenant n copies de l'itérateur sur la liste s. Chaque copie de l'itérateur commence au début de la liste. Le *args décompresse la liste en arguments pour zip(), ce qui entraîne la transmission de n itérables à la fonction.
Équivalent verbeux :
Pour recréer la fonctionnalité de zip ([iter(s)]n) avec verbeux code :
def verbose_chunk(s, n): """Returns a list of chunks of equal size from a list.""" chunks = [] for i in range(n): chunk = [] for j in range(len(s) // n): chunk.append(next(iter(s))) chunks.append(tuple(chunk)) return chunks
Ce code parcourt d'abord le nombre de morceaux souhaité. Pour chaque morceau, il utilise une boucle imbriquée pour parcourir les éléments de la liste et les ajouter au morceau. Le morceau est ensuite converti en tuple et ajouté à la liste des morceaux.
Exemple :
s = [1,2,3,4,5,6,7,8,9] n = 3 print(list(zip(*[iter(s)]*n))) # [(1,2,3),(4,5,6),(7,8,9)] print(verbose_chunk(s, n)) # [(1,2,3),(4,5,6),(7,8,9)]
Les deux approches produisent le même résultat, avec le zip concis ([iter(s)]n) expression offrant une syntaxe plus efficace pour diviser les listes en morceaux.
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!