Python - 二つのリスト一つ併合

二つのリストを一つにマージする方法を紹介します。

+演算子を利用した方法

次のように +演算子を利用して、二つのリストを一つ結合することができます。

list1 = [10, 22, 19]
list2 = [2, 9, 3]

list3 = list1 + list2
print(list3)

Output:

[10, 22, 19, 2, 9, 3]

extend()を利用した方法

次のように extend()演算子を利用して、二つのリストを一つ結合することができます。 +演算子とは異なる新たなリストを返しず、list1にlist2の内容が追加されます。

list1 = [10, 22, 19]
list2 = [2, 9, 3]

list1.extend(list2)
print(list1)

Output:

[10, 22, 19, 2, 9, 3]

map()を利用した方法

もし次のように list1list2merged_listよう作成しようとするときは、map()を使用することができます。 同じ位置のlist同士マージされます。

list1 = [[1, 10], [2, 22], [3, 19]]
list2 = [[4, 2], [5, 9], [6, 3]]
merged_list = [[1, 10, 4, 2], [2, 22, 5, 9], [3, 19, 6, 3]]

次のように実装することができます。

list1 = [[1, 10], [2, 22], [3, 19]]
list2 = [[4, 2], [5, 9], [6, 3]]

list3 = list(map(list.__add__, list1, list2))
print(list3)

Output:

[[1, 10, 4, 2], [2, 22, 5, 9], [3, 19, 6, 3]]

flatten

上記の例では、内部リストのすべてのデータを一つのリストにするには、(flatten) itertoolsを利用できます。 flattenを適用するには、 chain(*list3)のように *をリストに貼りべきです。

import itertools

list1 = [[1, 10], [2, 22], [3, 19]]
list2 = [[4, 2], [5, 9], [6, 3]]

list3 = list(map(list.__add__, list1, list2))
list4 = list(itertools.chain(*list3))
print(list4)

Output:

[1, 10, 4, 2, 2, 22, 5, 9, 3, 19, 6, 3]

zipを利用した方法

もし次のように list1list2merged_listよう作成しようとするときは、zip()を使用することができます。 単に同じ場所のlistを一つのtupleにまとめてくれます。

list1 = [[1, 10], [2, 22], [3, 19]]
list2 = [[4, 2], [5, 9], [6, 3]]
merged_list = [([1, 10], [4, 2]), ([2, 22], [5, 9]), ([3, 19], [6, 3])]

次のように実装することができます。

list1 = [[1, 10], [2, 22], [3, 19]]
list2 = [[4, 2], [5, 9], [6, 3]]

list3 = list(zip(list1, list2))
print(list3)

Output:

[([1, 10], [4, 2]), ([2, 22], [5, 9]), ([3, 19], [6, 3])]

Related Posts

codechachaCopyright ©2019 codechacha