重複要素を除く
sort / sorted と reverse / reversed で、リストの要素の順番を並び替える方法を見てきました。
今度は、要素の重複を上手く除く方法を考えてみましょう。
まずは自力で書いてみます。
これまでの知識だけで書くならば、例えば次のよう。
この例では、Bという新しいリストを用意しておき、Aの要素がBに無ければBに加える、を繰り返しています。リストBには重複した要素が見事になくなっています。
でも実はPythonにはリストの重複した要素を除去してくれる set という便利なメソッドがあるので、使ってみましょう。
以下のサンプルを見てください。
set を使うとなんと1行で重複要素を除くことができました。
ただし、print された結果を見てください。1つ目の例と少し違いますね?実はsetを使うと元のリストの順番は保存されず、Python内で勝手にsortされてしまうのです。これが許せない場合にはこの書き方ではいけません。
set を使って1行で書ける便利な方法はないのか・・・?
あります!前々回学んだ sorted での key を指定する方法と組み合わせればいけます。
sorted の key に A.index を指定すると、ご覧の通り、元の要素の順番を保持していることが分かりますね。よく理解できなかったとしても、これをそのまま書けばそれ以上困ることは無いのでは、と思います。おすすめ。