リストから重複した要素を取り除く
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]