演算子を利用する結合
最もシンプルな方法です。+演算子で結合を行います。2つ以上複数のリストを結合することも可能です。結合する元のリストは変更されず新しいリストが作成されます。
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined_list = list1 + list2
print(combined_list)
# [1, 2, 3, 4, 5, 6]
list1 = ['a', 'b', 'c']
list2 = ['o', 'p', 'q']
list3 = ['x', 'y', 'z']
combined_list = list1 + list2 + list3
print(combined_list)
# ['a', 'b', 'c', 'o', 'p', 'q', 'x', 'y', 'z']
list1 = ['a', 'b', 'c']
list2 = [1, 2, 'three']
list3 = ['x', 'y', 'z']
combined_list = list1 + list2 + list3
print(combined_list)
# ['a', 'b', 'c', 1, 2, 'three', 'x', 'y', 'z']
extend メソッド
既存のリストに別のリストの要素を追加します。元のリストが変更されます。
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.extend(list2)
print(list1)
# [1, 2, 3, 4, 5, 6]
print(list2)
# [4, 5, 6]
list1が変更されますが、list2に変更はありません。このようにリストを直接変更したい場合にはextendメソッドが適しています。
アンパック演算子を使用する
Python 3.5以降で利用できます。リストのアンパック演算子 (*
) を使用して、新しいリストを作成しながら要素を結合できます。
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list3 = [7, 8, 9]
combined_list = [*list1, *list2, *list3]
print(combined_list)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
リスト内包表記を利用する
リスト内包表記は、リストの要素を操作しながら新しいリストを作成する方法です。
list1 = [1, 2, 3]
list2 = [4, 5, 6]
# 各リストの要素をループで取り出し、新しいリストに追加する
combined_list = [item for sublist in [list1, list2] for item in sublist]
print(combined_list)
# [1, 2, 3, 4, 5, 6]
結合にも利用する場合、他の方法に比べてやや冗長になりますが、何かの処理を加えながら結合する場合には最適です。次の例では要素を倍にしながら結合を行っています。
list1 = [1, 2, 3]
list2 = [4, 5, 6]
# 各要素を2倍にする変換
combined_doubled = [x * 2 for sublist in [list1, list2] for x in sublist]
print(combined_doubled)
# [2, 4, 6, 8, 10, 12]
itertools.chain() を使用する
itertools.chain()
は、イテラブル動詞を結合して単一のイテレータを返します。特に大きなリストを扱う場合や、結果を即座にリストとして使わない場合にはメモリ効率が優れています。
import itertools
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list3 = [7, 8, 9]
# chainはイテレータを返すので、list()でリストに変換変換
combined_iterator = itertools.chain(list1, list2, list3)
combined_list = list(combined_iterator)
print(combined_list)
# 出力: [1, 2, 3, 4, 5, 6, 7, 8, 9]
結果をリストとして使う場合にはlist()を使ってイテレータをリスト化します。
コメント