Pythonでのリストの結合:説明と例
この記事では Python でのリストの結合について以下のトピックを扱います。
join()
関数でリストの要素を結合する (文字列、数値へ)join()
関数で区切り文字を使う (引用符"
,'
, カンマ,
, スペース- リストの結合
- リストを重複なく結合する
- リストのインデックスによる結合 (
map()
を使用)
主に、リスト内の要素を結合する方法と、複数のリスト自体を結合する方法を見ていきます。
リストに新しい要素を追加する方法はこの記事を参考してください。
1. join()
でリストの要素を文字列に結合する 【#1
Python では、join
メソッドは文字列を使ってリストの要素を結合する機能を提供します。
具体的には、リストの各要素を指定された区切り文字で区切られた1つの文字列に結合します。
簡単な例で説明すると、次のようなリストがあるとします:
fruits = ['apple', 'banana', 'orange']
このリストの要素をカンマで区切って1つの文字列に結合したいのです。そのためには join()
メソッドを使います:
result = ', '.join(fruits)
print(result)
# Output: apple, banana, orange
ここでは、'、'
が区切り文字として使用され、join()
メソッドはリスト fruits
の要素をカンマとスペースで区切って1つの文字列に結合します。
join
メソッドを使用するには、結合するリストのすべての要素が文字列でなければならないことに注意してください。
2. 数値リストの結合
リストの数値をどのように結合するかは、求める結果によって異なります。
それぞれの数値を1つの文字列に結合したい場合は join()
メソッドを使います。
リスト内の各数値の合計を取得したい場合は sum()
または reduce()
関数を使用します。
それぞれを見てみましょう。
2.1. 文字列への結合
セクション1で見たように、join()
メソッドを使うためには、リストの各要素を文字列に変換する必要があります。
以下の例では、すべてのスカラー要素を文字列に変換するためにジェネレータ構文を使用します。
numbers = [1, 2, 3, 4, 5]
combined = ''.join(str(num) for num in numbers)
print(combined)
# Output: 12345
str(num)
を使って各要素を文字列に変換し、join()
メソッドで結合して数字を1つの文字列にします。
2.2. 和を求める
リストの数値を合計する方法はたくさんあります。最も一般的なものを2つ見てみましょう。
まず、Python の組み込み関数 sum()
を使って単純に合計します。
numbers = [1, 2, 3, 4, 5]
sum_of_numbers = sum(numbers)
print(sum_of_numbers)
# Output: 15
2つ目の方法は reduce()
関数を使って関数型のコードを書くことです。
reduce()
関数は functools
モジュールによって提供され、リストの要素を繰り返し組み合わせて1つの結果を生成する機能を提供します。
この関数を使用して、リスト内の数値を1つの数値にまとめることができます。
例を見てみましょう。
from functools import reduce
numbers = [1, 2, 3, 4, 5]
reduce(lambda x,y: x + y, numbers)
print(combined)
# Output: 15
以下のように reduce()
関数を使って新しいアルゴリズムを書くこともできます。
from functools import reduce
numbers = [1, 2, 3, 4, 5]
combined = reduce(lambda x, y: x * 10 + y, numbers)
print(combined)
# Output: 12345
lambda x, y: x * 10 + y
という関数を使って、要素を繰り返し組み合わせて一つの数にします。
各要素は 10 倍され、次の要素に加算されて 12345
という結果になります。
3. リストの中のリストの結合
2つのリストやリスト内のリストを結合する方法はたくさんあります。ここではそのいくつかを紹介します。
3.1. 演算子 +
を使う
2つのリストを結合する最も簡単な方法は +
演算子を使うことです。
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list1 + list2
print(combined)
# Output: [1, 2, 3, 4, 5, 6]
このメソッドは元のリストを変更せず、新しい結合リストを作成する。
3.2. extend()
メソッドの使用
extend()
メソッドは他のリストからリストに項目を追加する方法です。
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.extend(list2)
print(list1)
# Output: [1, 2, 3, 4, 5, 6]
extend()
メソッドは list2
の要素を list1
に追加することができます。このメソッドは list1
を変更し、新しいリストは作成しません。
3.3. リスト連結演算子の使用
リスト連結演算子 *
を使って2つのリストを連結することもできます。
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = [*list1, *list2]
print(combined)
# Output: [1, 2, 3, 4, 5, 6]
この方法でも、元のリストは変更されず、新しい結合リストが作成される。
4. リストの結合時に重複を取り除く
2つのリストを結合するときに重複を取り除く方法もいくつかあります。以下にいくつかの例を示します。
4.1. 集合を使う
集合は重複項目を許さないという特徴があります。 これを利用するには、2つのリストを集合に変換し、さらにリストに戻すことで、重複除去されたリストを得ることができます。
list1 = [1, 2, 3, 4, 5]
list2 = [4, 5, 6, 7, 8]
combined = list(set(list1 + list2))
print(combined)
# Output: [1, 2, 3, 4, 5, 6, 7, 8]
まず、 +
演算子を使って list1
と list2
を結合します。
次に set()
関数を使って結合したリストを集合に変換し、 list()
関数を使ってリストに変換します。
このようにして重複を取り除いたリストを得ます。
4.2. リスト圧縮の使い方
リストを圧縮して重複を取り除くこともできます。これを行うには、2つのリストを結合し、重複を除外する条件を追加します。
list1 = [1, 2, 3, 4, 5]
list2 = [4, 5, 6, 7, 8]
combined = [x for x in list1 + list2 if x not in list1 or x not in list2]
print(combined)
# Output: [1, 2, 3, 6, 7, 8]
list1
と list2
を +
演算子で結合した後、
リスト圧縮を使用して、各項目が list1
にも list2
にも含まれない項目のみを含むリストを作成します。これにより、重複のないリストが得られます。
5. インデックスによるリストの結合
ここでは map()
関数と zip
関数を使って2つ以上のリストを結合する方法を示します。
map()
関数は複数のリストを受け取り、それぞれのリストの要素を結合する関数を適用します。
zip()
関数は同じインデックスを持つ要素をタプルに束ねます。
この2つの関数を一緒に使うと、下の例のような結果が得られます。
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list3 = [7, 8, 9]
combined = list(map(list, zip(list1, list2, list3)))
print(combined)
# Output: [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
zip(list1, list2, list3)
は各リストの同じインデックスの要素をタプルにパックします。
map(list, ...)
はこれらのタプルをリストに変換します。
つまり、変数 combined
は list1
, list2{;Py}
, list3
の同じインデックスを持つ要素を持つサブリストを格納します。
まとめ
この記事では、Python のリストの組み合わせに関する多くの質問に答えました。 リストの要素を組み合わせたいときや、リストそのものを組み合わせたいときにお役に立てれば幸いです。
