重複

2016-06-17 7 views
1

私はリストのリストを持って、それから重複を削除したいです。私は働く方法がありますが、それは醜く見え、それを行うより良い方法があるかどうかはわかりません。重複

[[1,2],[2,3]] 

私が欲しいものである:印刷し

a_list = [[1,2],[2,3],[1,2]] 
print [list(tup) for tup in set([tuple(x) for x in a_list])] 

。私はこのために小さなリストを使用しているので、速度には関係しませんが、これを行うにはより良い方法があるかどうかに関心があります。あなたはそれが少し短くすることができます

+0

同様の質問をhttp://stackoverflow.com/questions/3724551/python-uniqueness-for-list-of-listsで –

答えて

1

print list(set(tuple(x) for x in a_list)) 

出力:

[(1, 2), (2, 3)] 

あなたは表示形式についてとても心配していない場合は、単に最も外側リスト変換をオフのままに、与える:


Iは、各タプルの第二の部分、第一要素の簡単としての/ usr/SHAR/dictの/言葉を使用して、これまでに与えられた3つの回答にタイマーを実行しました。このファイルには約50万(479,829)語があります。

0.517719984055 list-> set-> list(元のコード) 1.30243611336 list-> set-> map(tmajest's suggestion) ???新しいリスト(サルマンの提案)

最後の1は、実行時の6分以上で完了していないを構築します。 トップはまだ1つのCPUを完全に使用していることを示しています。

+0

これは、とのリストを作ります内部のタプル。リストをネストしたリストにしたい。 – greenthumbtack

0
>>> a_list=[[1,2],[2,3],[1,2]] 
>>> newlist=[] 
>>> for each in a_list: 
     if each not in newlist: 
      newlist.append(each) 


>>> newlist 
[[1, 2], [2, 3]] 

新しい空のリストを作成します。 a_listのリストがnewlistに存在しない場合は、それをnewlistに追加します。お役に立てれば。最終結果はリストでなければならない場合:)

0

、その後、本当に短い方法はありません。あなたがしたい場合は、代わりに、リストの内包表記のマップを使用することができます。

list(map(list, set(map(tuple, a_list))))