私はリストのリストを持っています:
lists = [[1,4,3,2,4], [4,5]]
このリストをフラットにして、すべての重複を削除したいと思います。または、言い換えると、集合和集合演算を適用します。
desired_result = [1, 2, 3, 4, 5]
これを行う最も簡単な方法は何ですか?
set.union
あなたが望むことをします:
>>> results_list = [[1,2,3], [1,2,4]]
>>> results_union = set().union(*results_list)
>>> print(results_union)
set([1, 2, 3, 4])
これは、3 つ以上のリストでも実行できます。
Python 2.5 を使用しているように見えるので (バージョン != 2.6 の A が必要な場合は、Q で言及するとよいでしょう。ちなみに、現在の製品版です;-) として、セットではなくリストが必要です。結果、私はお勧めします:
import itertools
...
return list(set(itertools.chain(*result_list)))
itertoolsは通常、反復子 (および多くの種類のシーケンスやコレクション) を操作するための優れた方法であり、慣れ親しむことを心からお勧めします。 itertools.chain
、特に、ここに文書化されています。
共用体は、順序付けされたリストではサポートされていませんが、セットではサポートされています。set.unionをチェックしてください。
以下を使用して交差点を作成しました。これにより、セットの必要がなくなりました。
a, b= [[1,2,3], [1,2]]
s = filter( lambda x: x in b, a)
また、
s = [ x for x in b if x in a ]