37

リストのリストからすべての重複リストを削除したい。

だから私はこのようなリストのリストを持っています。

a = [[1,2],[1,2],[3,4,5],[3,4,5],[3,4,5]]

私がしたい:

b = [[1,2],[3,4,5]]

やり方がわかりません。

4

2 に答える 2

78

セットを使用できます:

b_set = set(map(tuple,a))  #need to convert the inner lists to tuples so they are hashable
b = map(list,b_set) #Now convert tuples back into lists (maybe unnecessary?)

または、リスト内包表記/ジェネレーターを好む場合:

b_set = set(tuple(x) for x in a)
b = [ list(x) for x in b_set ]

最後に、順序が重要な場合は、いつでも並べ替えることができます b:

b.sort(key = lambda x: a.index(x) )
于 2012-08-30T13:52:52.260 に答える
15

リストの順序が重要でない場合は、mgilson の回答を参照してください。順序を保持したい場合は、次のようにします。

b = list()
for sublist in a:
    if sublist not in b:
        b.append(sublist)

これにより、元のリストの順序が維持されます。ただし、セットを使用するよりも遅く、冗長になります。

于 2012-08-30T13:54:52.130 に答える