毎日Learning

学んだことを共有します

P08 (**) リストから同じ要素の連続を除去する。

def main():
    print compress("a") == None
    print compress(11) == None
    print compress([]) == []
    print compress(["a"]) == ["a"]
    print compress(["a", "b"]) == ["a", "b"]
    print compress(["a", "a", "b"]) == ["a", "b"]
    print compress(["a", "a", "b", "b"]) == ["a", "b"]
    print compress(["a", "a", "b", "b", "a"]) == ["a", "b", "a"]
    print compress(["a", "a", "a", "a", "b", "c", "c", "a", "a", "d", "e", "e", "e", "e"]) == ["a", "b", "c", "a", "d", "e"]

def compress(lista):
    return reduce(appender, lista, []) if isinstance(lista, list) else None

def appender(l, v):
    if l:
        if not l[-1] == v:
            l.append(v)
    else:
        l.append(v)
    return l

if __name__ == "__main__":
    main()