L-99
def remove_at(l, num): return [v for i,v in enumerate(l) if (i+1) != num] if isinstance(l, list) else None if __name__ == "__main__": print remove_at("a", 3) == None print remove_at(["a"], -1) == ["a"] print remove_at(["a"], 0) == ["a"] pr…
def rotate(l, num): return l[num:] + l[:num] if isinstance(l, list) else None if __name__ == "__main__": print rotate("a", 3) == None print rotate(["a"], -1) == ["a"] print rotate(["a"], 0) == ["a"] print rotate(["a"], 1) == ["a"] print ro…
def slicer(l, start, end): if not isinstance(l, list) or not start or not end or start > end or start > len(l) or end > len(l): return None return l[start-1:end] if __name__ == "__main__": print slicer("a", 3, 5) == None print slicer(["a"]…
def split_list(l, num): return [l[:num], l[num:]] if isinstance(l, list) else None if __name__ == "__main__": print split_list("a", 3) == None print split_list([], 0) == [[], []] print split_list(["a"], -1) == [[], ['a']] print split_list(…
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"] …
def repli(lista, num): return reduce(lambda l,v: l+[v for i in range(num)], lista, []) if isinstance(lista, list) else None if __name__ == "__main__": print repli("a", 3) == None print repli([], 0) == [] print repli(["a"], 0) == [] print r…
def dupli(lista): return reduce(lambda x,y: x+[y,y], lista, []) if isinstance(lista, list) else None if __name__ == "__main__": print dupli("a") == None print dupli([]) == [] print dupli(["a"]) == ["a", "a"] print dupli(["a", "b"]) == ["a"…
def encode_direct(lista): def padd(p, v): if not p or not v in p[-1]: p.append(v) else: if isinstance(p[-1], list): p[-1][0] += 1 else: p[-1] = [2, v] return p return reduce(padd, lista, []) if isinstance(lista, list) else None if __name__…
L-99: Ninety-Nine Lisp Problems p11-p12 までのソースをさらす - 毎日Learning の続き。今回はししょーに、「簡潔なコードを書くことにこだわりすぎず、分かりやすいコードを書くようにせよ」との命題を受けた。が、受ける前に書いているコードもいくつか…
def main(): print decode(encode_modified("a")) == None print decode(encode_modified([])) == [] print decode(encode_modified(["a"])) == ["a"] print decode(encode_modified(["a", "b"])) == ["a", "b"] print decode(encode_modified(["a", "a", "b…
def main(): print encode_modified("a") == None print encode_modified([]) == [] print encode_modified(["a"]) == ["a"] print encode_modified(["a", "b"]) == ["a", "b"] print encode_modified(["a", "a", "b"]) == [[2, "a"], "b"] print encode_mod…
def main(): print encode("a") == None print encode([]) == [] print encode(["a"]) == [[1, "a"]] print encode(["a", "b"]) == [[1, "a"], [1, "b"]] print encode(["a", "a", "b"]) == [[2, "a"], [1, "b"]] print encode(["a", "a", "b", "b"]) == [[2…
def main(): print pack("a") == None print pack([]) == [] print pack(["a"]) == [["a"]] print pack(["a", "b"]) == [["a"], ["b"]] print pack(["a", "a", "b"]) == [["a", "a"], ["b"]] print pack(["a", "a", "b", "b"]) == [["a","a"], ["b", "b"]] p…