リストから重複した要素を取り除く
Python には uniq がないらしい。ああ、なんてこった。
というわけで作ってみた。
def uniq(lis): r = [] for i in lis: if i not in r: r.append(i) return r a = [1, 1, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9] print 'Original: ', a print 'Uniq: ', uniq(a)
もうちょっときれいにならないかな。reduceでできそうな気がする。
^o^ > python uniq.py Original: [1, 1, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9] Uniq: [1, 2, 3, 4, 5, 6, 7, 8, 9]
リストから重複した要素だけを取り出す
今度は逆に、重複した要素だけを取り出してみる。
def overlup(lis): r = [] def func(x, y): if x == y and x not in r: r.append(x) return y reduce(func, lis) return r a = [1, 1, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9] print 'Original: ', a print 'Overlup: ', overlup(a)
^o^ > python overlup.py Original: [1, 1, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9] Overlup: [1, 4, 7]