Compression de listes de tailles différentes à l'aide des fonctions intégrées
Alors que la fonction zip intégrée est incapable de répéter la liste la plus courte lors de la fusion de deux des listes de tailles différentes, vous pouvez exploiter la fonction itertools.cycle pour obtenir ce résultat.
cycle du package Python itertools crée un itérateur qui renvoie à plusieurs reprises é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 :
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)
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 ses éléments à plusieurs reprises. 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.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3