Maison > développement back-end > Tutoriel Python > Comment puis-je entrelacer efficacement deux listes de longueurs potentiellement différentes en Python ?

Comment puis-je entrelacer efficacement deux listes de longueurs potentiellement différentes en Python ?

Linda Hamilton
Libérer: 2024-12-06 08:43:12
original
519 Les gens l'ont consulté

How Can I Efficiently Interlace Two Lists of Potentially Different Lengths in Python?

Entrelacement pythonique : combiner des listes en alternance

En Python, entrelacer deux listes signifie créer une nouvelle liste qui alterne les éléments des deux listes. Pour y parvenir, envisagez les scénarios suivants :

Listes de longueur correspondante

Si les deux listes ont un nombre égal d'éléments, une solution simple consiste à utiliser le découpage :

list1 = ['f', 'o', 'o']
list2 = ['hello', 'world']
result = [None] * (len(list1) + len(list2))
result[::2] = list1
result[1::2] = list2
print(result)
Copier après la connexion

Cela produira le résultat souhaité :

['f', 'hello', 'o', 'world', 'o']
Copier après la connexion

Longueur-Mismatched Listes

Lorsque les listes d'entrée ont des longueurs différentes, une logique supplémentaire est requise :

Laisser les éléments en excès à la fin

Pour laisser les éléments en excès de la liste plus longue à la fin , utilisez cette approche :

def interlace(list1, list2):
    result = []
    i, j = 0, 0  # indices for list1 and list2

    while i < len(list1) and j < len(list2):
        result.append(list1[i])
        result.append(list2[j])
        i += 1
        j += 1

    # Add remaining elements from the longer list
    result.extend(list1[i:] if len(list1) > len(list2) else list2[j:])

    return result
Copier après la connexion

Intercaler les éléments uniformément

Pour répartir uniformément les éléments en excès dans la liste entrelacée, utilisez cette méthode :

def interlace_evenly(list1, list2):
    shorter_list = list1 if len(list1) < len(list2) else list2
    longer_list = list1 if len(list1) > len(list2) else list2

    result = []

    # Intersperse elements of the shorter list
    for i in range(len(shorter_list)):
        result.append(shorter_list[i])
        result.append(longer_list[i % len(longer_list)])

    # Add remaining elements from the longer list
    result.extend(longer_list[len(shorter_list):])

    return result
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal