Merge alternatively Flashcards
(7 cards)
Dans quel cas utilise-t-on le pattern “Merge Alterné” ?
Quand on veut fusionner deux séquences (listes, chaînes, etc.) en alternant leurs éléments, tout en gérant automatiquement les différences de longueur.
Quelle est l’idée centrale du Merge Alterné sans zip() ?
Calculer la longueur maximale des deux séquences (max_len).
Boucler de 0 à max_len-1. À chaque itération, vérifier si l’index existe dans chaque séquence (avec i < len(seq)) et, si oui, ajouter l’élément correspondant à la liste résultat.
Comment gérer proprement les séquences de tailles différentes ?
Plutôt que de padder ou de couper :
On parcourt jusqu’à la taille du plus long. On fait un simple if i < len(seq) avant chaque accès.
Quelle est la complexité de ce pattern ?
Temps : O(n) avec n = len(seq1) + len(seq2) (une seule boucle linéaire).
Espace : O(n) pour la nouvelle séquence fusionnée.
Pourquoi ce pattern est-il souvent préféré à zip_longest() ou au padding manuel ?
Clarté : pas de dépendance à une fonction externe.
Robustesse : pas de valeur de “remplissage” à choisir.
Performance : une seule boucle, aucun traitement superflu.
Résumé express du pattern à retenir ?
“Parcours jusqu’au plus long, teste l’existence d’une valeur avant de la prendre, et ajoute en alternance.”
Exemples d’applications :
Fusion de deux listes de données (dates vs. valeurs). Affichage intercalé de messages de deux utilisateurs. Combinaison de deux flux d’événements en temps réel.