Python3で重複がないリストを作れた話

AIZU Online Judgeとかpaizaとかやってると重複のないリストを作れとか、重複があるとしてどれだけ重複してるか数えろって問題に出くわす。

う〜ん、どうやるんかなぁ、わからへんなぁって放置してたんだけど、なんかパッとひらめいて書いてみたら、へたっぴな自分にしては上手に書けたので残しとこうと思う。

まず標準入力から受け取るデータは空白で区切られた文字列。

 

 

apple banana orange strawberry orange banana banana grape

 

 

これから要素の重複がないリストを作成し、また要素が元のデータでどれだけ重複していたかをカウントする。

 

 

data = input().rstrip().split()

# 重複なしのリスト生成
no_deplicate = []

# 元のリストからデータを一つずつ取り出す
for i in data:
    # もしno_deplicateに同じデータがなければ、要素を追加する
    if i not in no_deplicate:
        no_deplicate.append(i)

for i in no_deplicate:
    print(i + " " + str(data.count(i)))

 

 

実行結果は以下のとおり。

 

 

apple 1
banana 3
orange 2
strawberry 1
grape 1

 

 

ぐぐったらset使う方が多分メジャーなやり方なんかな?でも自分としてはなんかこっちがしっくりきたし、ひらめいて嬉しかった。