Compresser des 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 cela, 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 :
<code class="python">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)</code>
Dans cette solution, nous utilisons un conditionnel instruction 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.
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!