【python】配列から重複要素のみを出力させる

引き続きプログラミング記事。
完全に備忘録ですね。

引き続きCheckiOに挑戦してます。
昨日に比べると、少し解くのが早くなったかな。

今回は、
配列から重複要素のみを出力させる
という課題に挑戦。

重複要素のみを出力

調べ方としては、
重複する要素を出力することと、配列の操作という観点で検索かけました。

今回もcollectionsのCounterが活躍。
importはそれくらいでいけました。

from collections import Counter

def checkio(data):
for i,v in Counter(data).items():
if v == 1:
data.remove(i)
return data

ずっとどうやったら取り出せるかを考えていて、
Counterを使うとなのかはちょっと怪しいところですが、
重複した要素は出力する際に、まとめられてしまうのでハマった。


>>> list = [1,2,1,2,5]
>>> duplication = [i for i,v in Counter(list).items() if v > 1]
>>> duplication
# [1,2]

こんな感じになってしまったので、
逆の発想で、重複している値を削除しちゃえばいいかってなった。

ちなみに重複した要素を削除する場合にはさっきの逆で


>>> list = [1,2,1,2,5]
>>> duplication = [i for i,v in Counter(list).items() if v == 1]
>>> duplicaton

で取得できるんじゃないかなと。

参考にさせていただいたブログ

[python]リスト – 作成、取り出し、置換、追加、検索、削除、要素数作成
要素の確認(in演算子, indexメソッド, countメソッド)
[Python] リスト内の重複項目のみ取得する

プログラミングしてると逆転の発想なんて当たり前なんだろうなぁ
もっと触れる機会を増やそう。

どうでもいいけど、codeタグのcssかな。
なんかかなり見辛いから変えよ。笑

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です