リストから重複要素を削除する
Pythonでリストから重複要素を削除する方法をメモ.
1度,集合型にして重複要素を削除.
その後リスト型に戻す.
# coding: utf-8 ls = [2,0,0,8,"Apple",0,3,"Bart",2,3,"Apple"] print list(set(ls))
実行結果:
bash-3.2$ python listtest.py python listtest.py [0, 2, 3, 'Apple', 8, 'Bart']
コレだと,結果が一意に定まってしまい,要素の順序が保存されない.
重複した要素を削除して,要素の出現順のに並んだリストを手に入れるには↓.
# coding: utf-8 ls = [2,0,0,8,"Apple",0,3,"Bart",2,3,"Apple"] output = [] for i in ls: if not i in output: output.append(i) print output
実行結果:
bash-3.2$ python listtest.py python listtest.py [2, 0, 8, 'Apple', 3, 'Bart']
もっとイイ書き方ないかな?
追記(2008Mar26):
morchinさんからもっとイイ書き方のコメントを頂きました.
どうやら,組み込み関数sortedには,key引数に要素のキーを取得する関数を指定できるみたいです.
すると,↓で記述できます.
sorted(set(ls), key=ls.index)
コレはとってもキレイ!!