毎日Learning

学んだことを共有します

2010-07-28から1日間の記事一覧

2010年07月28日のツイート

@yoshiyoshifujii: 今日は昼間が研修だったからツイート少な目や。2010-07-28 21:49:08 via Vim @yoshiyoshifujii: TL見るときってアイコンで誰か判断するし、アイコンころころ変えたらわからんなー2010-07-28 18:31:00 via Twitter for iPhone @yoshiyoshif…

P20 (*)リストからK番目の要素を削除する。

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…

P19 (**)リスト要素をN要素分左に移動させる。

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…

P18 (**)リストをスライスして要素を抽出する。

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"]…

P17 (*)リストを2つに分割する。1つ目の要素の長さは指定される。

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(…

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"] …

P15 (**)リストの各要素を指定回数連続させる。

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…

P14 (*) リストの各要素を2連続させる。

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"…

P13 (**) リストをランレングス圧縮(直接型)

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 p13-p20 までのソースをさらす

L-99: Ninety-Nine Lisp Problems p11-p12 までのソースをさらす - 毎日Learning の続き。今回はししょーに、「簡潔なコードを書くことにこだわりすぎず、分かりやすいコードを書くようにせよ」との命題を受けた。が、受ける前に書いているコードもいくつか…