重複要素を除く

sort / sortedreverse / reversed で、リストの要素の順番を並び替える方法を見てきました。
今度は、要素の重複を上手く除く方法を考えてみましょう。


まずは自力で書いてみます。
これまでの知識だけで書くならば、例えば次のよう。

この例では、Bという新しいリストを用意しておき、Aの要素がBに無ければBに加える、を繰り返しています。リストBには重複した要素が見事になくなっています。


でも実はPythonにはリストの重複した要素を除去してくれる set という便利なメソッドがあるので、使ってみましょう。
以下のサンプルを見てください。

set を使うとなんと1行で重複要素を除くことができました。
ただし、print された結果を見てください。1つ目の例と少し違いますね?実はsetを使うと元のリストの順番は保存されず、Python内で勝手にsortされてしまうのです。これが許せない場合にはこの書き方ではいけません。


set を使って1行で書ける便利な方法はないのか・・・?
あります!前々回学んだ sorted での key を指定する方法と組み合わせればいけます。

sorted の key に A.index を指定すると、ご覧の通り、元の要素の順番を保持していることが分かりますね。よく理解できなかったとしても、これをそのまま書けばそれ以上困ることは無いのでは、と思います。おすすめ。


Pythonの記事一覧へは こちら から。