ホームページ > バックエンド開発 > Python チュートリアル > Python で長さが異なる可能性のある 2 つのリストを効率的にインターレースするにはどうすればよいですか?

Python で長さが異なる可能性のある 2 つのリストを効率的にインターレースするにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-06 08:43:12
オリジナル
511 人が閲覧しました

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

Python のインターレース: リストを交互に結合する

Python では、2 つのリストをインターレースするとは、両方のリストの要素を交互に配置する新しいリストを作成することを意味します。これを実現するには、次のシナリオを検討します:

長さが一致したリスト

両方のリストの要素数が等しい場合、簡単な解決策はスライスを使用することです:

list1 = ['f', 'o', 'o']
list2 = ['hello', 'world']
result = [None] * (len(list1) + len(list2))
result[::2] = list1
result[1::2] = list2
print(result)
ログイン後にコピー

これにより、目的の出力が生成されます:

['f', 'hello', 'o', 'world', 'o']
ログイン後にコピー

長さが一致しませんリスト

入力リストの長さが異なる場合、追加のロジックが必要です。

余分な要素を最後に残す

長いリストの余分な要素を最後に残すには、次のアプローチを使用します:

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
ログイン後にコピー

要素を均等に散在させる

分散するには余分な要素をインターレース リスト内で均等に配置するには、次の方法を使用します:

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
ログイン後にコピー

以上がPython で長さが異なる可能性のある 2 つのリストを効率的にインターレースするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート