Compression de listes de tailles différentes à l'aide de fonctions intégrées
Bien que la fonction zip intégrée ne puisse pas répéter la liste la plus courte lors de la fusion de deux des listes de tailles différentes, vous pouvez utiliser la fonction itertools.cycle pour obtenir ce résultat.
cycle du package Python itertools crée un itérateur qui renvoie à plusieurs reprises des éléments d'un itérable, même après son épuisement. En combinant zip avec cycle, il est possible de gérer l'écart de taille entre les listes et de garantir que la liste la plus longue est répétée si nécessaire.
Exemple :
<code class="python">A = [1, 2, 3, 4, 5, 6, 7, 8, 9] B = ["A", "B", "C"] # Use itertools.cycle to repeat the shorter list from itertools import cycle zip_list = zip(A, cycle(B)) if len(A) > len(B) else zip(cycle(A), B)</code>
Dans cet exemple :
Résultat :
zip_list contiendra les tuples suivants en tant qu'objet générateur :
[(1, 'A'), (2, 'B'), (3, 'C'), (4, 'A'), (5, 'B'), (6, 'C'), (7, 'A'), (8, 'B'), (9, 'C')]
Comment ça marche :
itertools.cycle crée une copie de l'itérable (dans ce cas, B) et renvoie son éléments. Lorsque zip parcourt A, il associe chaque élément avec le prochain élément disponible de l'itérateur cyclique.
Si A est plus court que B, le processus recommence depuis le début de B une fois son itérateur épuisé. À l'inverse, si A est plus long, l'itérateur B effectue un cycle continu pour remplir le reste de la liste fusionnée.
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!