リストのリストがあります:
lists = [[1,4,3,2,4], [4,5]]
このリストをフラット化し、すべての重複を削除します。または、言い換えると、集合和演算を適用します。
desired_result = [1, 2, 3, 4, 5]
これを行う最も簡単な方法は何ですか? (Python 2.4)を使用せざるを得ません)
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つ以上のリストを使用してこれを行うこともできます。
ユニオンは順序付けられたリストではサポートされていませんが、セットではサポートされています。 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 ]
このスタイルに従うこともできます
In [12]: a = ['Orange and Banana', 'Orange Banana']
In [13]: b = ['Grapes', 'Orange Banana']
In [14]: c = ['Foobanana', 'Orange and Banana']
In [20]: list(set(a) | set(b) | set(c))
Out[20]: ['Orange and Banana', 'Foobanana', 'Orange Banana', 'Grapes']
In [21]: list(set(a) & set(b) | set(c))
Out[21]: ['Orange and Banana', 'Foobanana', 'Orange Banana']