Home 問題2
問題:
数字の入ったリストから、重複がないもののみを消す。
[1,2,3,4,5,6,4,2,5] => [2,4,5,4,2,5] #1,3,6が消去
from collections import Counter import numpy as np def checkio(data): count = Counter(data) [x for (x, y) in count.items() if y == 1] erase = [x for (x, y) in count.items() if y == 1] return [i for i in data if sum(np.array(erase)==i)==0]
まず、一つしかない数字をリストにして、それをarrayにしてから、ループでそのリストに含まれないものをり出すという方法。
これは冗長で、下記のようにすっきりかけた
def checkio(data): count = Counter(data) return [i for i in data if count[i] >1]
更に、list.count(x)という関数を使うと、リストの中身にxが何個あるかを計測してくれるようなので、
def checkio(data): return [i for i in data if data.count(i)>1]
ともっと短くかけるのでした。