毎日Learning

学んだことを共有します

P16 (**)リストのNの倍数番目の要素を削除する。リストの最初の要素を1番目として数える。

def drop(lista, num):
    return [v for i,v in enumerate(lista) if (i+1)%num != 0] if 0 < num else None

if __name__ == "__main__":
    print drop([], 0) == None
    print drop(["a"], 0) == None
    print drop(["a"], 1) == []
    print drop(["a"], 2) == ["a"]
    print drop(["a", "b"], 0) == None
    print drop(["a", "b"], 1) == []
    print drop(["a", "b"], 2) == ["a"]
    print drop(["a", "b"], 3) == ["a", "b"]
    print drop(["a", "b", "c"], 0) == None
    print drop(["a", "b", "c"], 1) == []
    print drop(["a", "b", "c"], 2) == ["a", "c"]
    print drop(["a", "b", "c"], 3) == ["a", "b"]
    print drop(["a", "b", "c"], 4) == ["a", "b", "c"]
    print drop(["a", "b", "c", "d", "e", "f", "g", "h", "i", "k"], 1) == []
    print drop(["a", "b", "c", "d", "e", "f", "g", "h", "i", "k"], 3) == ["a", "b", "d", "e", "g", "h", "k"]
    print drop(["a", "a", "a", "a", "a", "a", "a", "a", "a", "a"], 3) == ["a", "a", "a", "a", "a", "a", "a"]