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 サイトの他の関連記事を参照してください。