この質問から拡張して、これに対する可能な限り最速の解決策が必要です:
以下を考えると:
m=['abc','bcd','cde','def']
r=[['abc','def'],['bcd','cde'],['abc','def','bcd']]
これらのオブジェクト (または作成された新しいオブジェクト) を編集して、リスト m の各要素について、r のすべてのリストで 2 回未満しか存在しない場合、要素が m から削除され、どこからでも削除されるようにしたいと思います。 r.
したがって、上記の結果は次のようになります。
['abc','bcd','def']
...「cde」は r で 1 回しか見つからないためです。
さらに良いのはこれです:
[2, 2, 1, 2]
...または r のリスト全体での m の要素の頻度のカウント。次に、数値に基づいて、値が特定の基準を満たしている場合、出力のインデックスに基づいて r のリストを編集できます。
たとえば、i <2 または >100 の場合、r の各リストのインデックス i を削除します。
これを行うには回り道がありますが、1 月の糖蜜よりも遅くなります。
私の出発点はこれです:
[[1 if mx in rx else 0 for mx in m] for rx in map(set, r)]
これを生成します:
[[1, 0, 0, 1], [0, 1, 1, 0], [1, 1, 0, 1]]
前もって感謝します!