Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで別のリストの値を使ってリストをマスクする方法

あるリストの各要素が、別のリスト(検索対象リスト)に含まれているかどうかに応じて、元のリストを0と1だけで構成される「マスク」に変換したいケースはよくあります。このような処理には、Pythonのリスト内包表記を使うのが最もシンプルで読みやすい方法です。

サンプルコード

以下に具体的な実装例を示します。

my_list = [5, 6, 1, 9, 11, 0, 4]

print("The list is :")
print(my_list)

search_list = [2, 10, 6, 3, 9]

result = [1 if element in search_list else 0 for element in my_list]

print("The result is :")
print(result)

出力結果

The list is :
[5, 6, 1, 9, 11, 0, 4]
The result is :
[0, 1, 0, 1, 0, 0, 0]

コードの解説

  • まず、マスク対象となるリストmy_listを定義し、コンソールに表示します。

  • 次に、検索条件となる別のリストsearch_listを定義します。

  • リスト内包表記を使ってmy_listの各要素を順番に取り出し、その要素がsearch_listに存在すれば1、存在しなければ0を生成します。

  • 生成されたマスク(0と1のリスト)は変数resultに代入されます。

  • 最後に、結果をコンソールに出力して確認します。

補足:パフォーマンスを上げるテクニック

search_listが大きくなると、リストに対するin演算子の判定は線形時間(O(n))を要するため、処理速度が低下する可能性があります。あらかじめset(集合型)に変換しておけば、要素の存在確認を平均O(1)で行えるようになり、大幅な高速化が期待できます。

search_set = set(search_list)
result = [1 if element in search_set else 0 for element in my_list]
  1. 【Python入門】リストから一意の値(重複しない要素)だけを抽出して出力する方法

    リストが与えられたとき、その中から重複を除いた一意の値(ユニークな要素)だけを取り出して表示するのが、この記事の目的です。Pythonを使えば、初心者でも簡単に実装できる定番の処理なので、ぜひマスターしておきましょう。実行例入力:A = [1, 2, 3, 4, 2, 1, 9] 出力:[1, 2, 3, 4, 9]リスト内に同じ値が複数回現れていても、出力されるのはそれぞれ1回だけです。アルゴリズムステップ1:ユーザーからリストを入力として受け取る。 ステップ2:空のリストを作成する。 ステップ3:元のリストの全要素を順番に走査する。 ステップ4:その要素がすでに一意のリストに存在するかどう

  2. Pythonで別のリストのインデックスを指定してリストから要素を削除する方法

    Pythonでインデックスリストに基づいてリストの要素を削除する方法ここでは2つのリストを扱います。L1は要素を削除する対象となるリストオブジェクト、L2は削除したい要素のインデックスを格納したリストです。>>> L1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]>>> L2 = [2, 4, 6]L2で指定されたインデックスにある要素をL1から取り除くには、まずL1からenumerateオブジェクトを作成します。enumerate()関数は、リスト内の各要素とそのインデックスをペアにしたタプルのコレクション(enumerateオブジェクト)を