1. ホーム
  2. python

[解決済み] Pythonで配列フィルタ?

2022-12-23 10:43:45

質問

例えば、2つのリストがあります。

 A           = [6, 7, 8, 9, 10, 11, 12]
subset_of_A  = [6, 9, 12]; # the subset of A


the result should be [7, 8, 10, 11]; the remaining elements 

Pythonにこれを行う組み込みの関数はありますか?

どのように解決するのですか?

順番が重要でない場合は set.difference . しかし、順序を保持したいのであれば、単純なリスト内包で十分です。

result = [a for a in A if a not in subset_of_A]

EDITです。 delnanが言うように、以下のようにするとパフォーマンスが大幅に改善されます。 subset_of_A が実際の set に属しているかどうかをチェックするので set のチェックは、リストのO(n)と比べてO(1)だからです。

A = [6, 7, 8, 9, 10, 11, 12]
subset_of_A = set([6, 9, 12]) # the subset of A

result = [a for a in A if a not in subset_of_A]