"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je compresser des listes de longueurs inégales en répétant la plus courte ?

Comment puis-je compresser des listes de longueurs inégales en répétant la plus courte ?

Publié le 2024-11-08
Parcourir:518

How Can I Zip Unequal Length Lists by Repeating the Shorter One?

Compression de listes de tailles différentes en répétant la plus courte

Lorsque vous essayez de compresser deux listes de longueurs inégales, la fonction zip intégrée tombe court en ne répétant pas la liste la plus courte pour correspondre à la plus grande. Pour surmonter ce problème, des approches alternatives sont nécessaires.

Solution utilisant itertools.cycle

La fonction itertools.cycle offre la possibilité de parcourir un itérable à l'infini. Cette fonctionnalité peut être exploitée pour répéter indéfiniment la liste la plus courte tout en la compressant avec la liste la plus longue.

Mise en œuvre :

import itertools

A = [1, 2, 3, 4, 5, 6, 7, 8, 9]
B = ["A", "B", "C"]

zip_list = zip(A, itertools.cycle(B)) if len(A) > len(B) else zip(itertools.cycle(A), B)

Dans cette solution, nous utilisons une instruction conditionnelle pour déterminer quelle liste doit être répétée. Si A est plus long que B, nous utilisons itertools.cycle pour répéter B, et si B est plus long que A, nous répétons A.

La zip_list résultante contiendra des tuples associant des éléments de A et B, B étant répété si nécessaire pour correspondre à la longueur de A. Cette approche garantit que tous les éléments des deux listes sont appariés, la liste la plus courte étant répétée selon les besoins.

Dernier tutoriel Plus>

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