2017-11-15 5 views
0

私はリストの巨大なリストを持っています。 すべての子リストを親リスト にマージし、マージ後に親リストから重複したアイテムを削除したいとします。Pythonはすべての子リストを親リストにマージし、重複を削除します

これを行う最適な方法は何ですか?例について

:我々のようなxの値を取得できます

x = [['a', 'b', 'c', 2, 4], ['x', 1, 2, 3, 'z'], ['z', 'b', 'y', 'a' 'x']] 

[ 'A'、 'B'、 'C​​'、1、2、3、4、 'Z'、 'Y'、 'X']

+1

[Pythonでリストのリストのうちのフラットなリストを作る]の可能複製(https://stackoverflow.com/questions/952914 /フラットリストのリストを作成中のリストのリストから) –

+0

なぜ数字が「4」ですか? –

+2

出力が私には合いません。あなたは確かにそれについて?注文は奇妙で値はありません。 –

答えて

2

使用セットとチェーン:

x = [['a', 'b', 'c', 2, 4], ['x', 1, 2, 3, 'z'], ['z', 'b', 'y', 'a' 'x']] 

from itertools import chain 

result = list(set(chain.from_iterable(x))) 
print(result) 
+0

これは、結果リストの要素の順序を変更します。 – Abhijeetk431

2

まず、のlistに変換することができをlistに変換し、そのlistsetを適用します。

x = [['a', 'b', 'c', 2, 4], ['x', 1, 2, 3, 'z'], ['z', 'b', 'y', 'a' 'x']] 
new_ls=[] 
for ls in x: 
    new_ls.extend(ls) 
print(list(set(new_ls)) 

出力:

[1, 2, 3, 4, 'ax', 'b', 'y', 'x', 'c', 'z', 'a'] 
4

使用set

x = [['a', 'b', 'c', 2, 4], ['x', 1, 2, 3, 'z'], ['z', 'b', 'y', 'a' 'x']] 
>>> list(set([item for sublist in x for item in sublist])) 
[1, 2, 3, 4, 'z', 'ax', 'a', 'b', 'c', 'x', 'y'] 
関連する問題