HOWTO · Python

Python のリストで要素を置換する方法

Python のリストでは、要素は様々な方法で他の数値に置き換えられます。この目的のために、リストインデックス、for ループ、リスト内包、マップ関数などのメソッドを使用します。

Python リストの要素を置換する方法はいくつかあります。Python リストの要素をインデックス化する方法、for ループ、map 関数、リスト内包の方法などがあります。

この記事では、上記の Python リストの要素を見つけて置換する方法について説明します。

Python のリスト要素の検索と置換をリストインデクシングの方法で行う

下のリストを例にしてみましょう。

my_list = [5, 10, 7, 5, 6, 8, 5, 15]

インデックス 0 の要素を 5 から 20 に変更します。

例のコードは以下のようになります。

my_list = [5, 10, 7, 5, 6, 8, 5, 15]
my_list[0] = 20

print(my_list)

出力:

[20, 10, 7, 5, 6, 8, 5, 15]

Python のリストの要素を for ループメソッドで検索して置換する

このメソッドでは enumerate() 関数を用います。これはカウンタと要素を含む enumerate オブジェクトを返します。関数 enumerate()for ループを組み合わせると、enumerate オブジェクトを繰り返し処理し、インデックスと要素を一緒に取得します。

コードは以下のようになります。

my_list = [5, 10, 7, 5, 6, 8, 5, 15]
for index, value in enumerate(my_list):
    if value == 5:
        my_list[index] = 9

print(my_list)

出力:

[9, 10, 7, 9, 6, 8, 9, 15]

Python のリスト要素をリスト内包表記メソッドで検索して置換する

この方法では、古いリストに事前に定義された条件を適用して新しいリストを生成します。

構文は以下の通りです。

my_list = [5, 10, 7, 5, 6, 8, 5, 15]

[9 if value == 5 else value for value in my_list]

print(my_list)

出力:

[9, 10, 7, 9, 6, 8, 9, 15]

Python のリスト要素を map メソッドで検索して置換する

このメソッドは、2 番目のリストのエントリを 1 番目のリストの要素のインデックスで変更します。

コードは以下の通りです。

list_1 = [5, 10, 7]
list_2 = [7, 10, 7, 5, 7, 5, 10]

ent = {k: i for i, k in enumerate(list_1)}
result = list(map(ent.get, list_2))

print("list2 after replacement is:", result)

出力:

list2 after replacement is: [2, 1, 2, 0, 2, 0, 1]

備考

  1. リストの中の 1つの要素を置換する場合には、リストインデックス法が良いです。
  2. リスト内の複数の要素を選択的に置換する場合には、リスト内包表記が適しています。
  3. ループ法は実行時間とメモリが多くなるのでお勧めしません。