毎日Learning

学んだことを共有します

2010-07-01から1ヶ月間の記事一覧

2010年07月31日のツイート

@yoshiyoshifujii: そしてどちらも、一緒に話しかけてくる。まあ一方はしゃんしゃん言うてて何言うてんのか分からんけど。2010-07-31 05:23:41 via Vim @yoshiyoshifujii: セミと息子は同時に起きる。2010-07-31 05:22:52 via Vim

2010年07月30日のツイート

@yoshiyoshifujii: こうせかせか仕事してる日はつぶやくタイミングがねえなー。2010-07-30 17:53:40 via Vim @yoshiyoshifujii: ふー。集中して仕事した気がするー。2010-07-30 17:53:08 via Vim

2010年07月29日のツイート

@yoshiyoshifujii: @chatdefou 涼しくてちょっと嬉しい反面、来月の電気代を考えたら凹むのよね。2010-07-29 21:08:28 via Twitter for iPhone to @chatdefou @yoshiyoshifujii: @pirosuke ちっ2010-07-29 21:05:31 via Twitter for iPhone to @pirosuke @yo…

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 の続き。今回はししょーに、「簡潔なコードを書くことにこだわりすぎず、分かりやすいコードを書くようにせよ」との命題を受けた。が、受ける前に書いているコードもいくつか…

2010年07月27日のツイート

@yoshiyoshifujii: あーもしかして、OAuth認証が必要なことだけ出来なくなるからえーのか。それ以外のことについては、サイトが許容するかどうするかの問題ってことなのかな。2010-07-27 19:05:36 via Vim @yoshiyoshifujii: TwitterのOAuthで認証した後にco…

P12 (**) P11の解でランレングス圧縮されたリストを解凍して元に戻す。

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…

P11 (*) ランレングス圧縮の改良版。

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…

L-99: Ninety-Nine Lisp Problems p11-p12 までのソースをさらす

L-99: Ninety-Nine Lisp Problems p09-p10 までのソースをさらす - 毎日Learning の続き。この問題に取り組むようになって、問題を1つずつ解いていくと、毎回、新たな発見があり、なかなか面白い。今までは、ぱっとやって動いたら、はい次ーってやっていたの…

2010年07月26日のツイート

@yoshiyoshifujii: pythonのリストはリストを足すとリストにリストを追加してくれるのか![1,2,3] [4,5] = [1,2,3,4,5]2010-07-26 21:09:10 via Vim @yoshiyoshifujii: 今晩は良い風が吹いてるなー。これも夏の風物詩のひとつだなー。きもちえー。2010-07-26…

2010年07月25日のツイート

@yoshiyoshifujii: そういや明日は本社だった。忘れてたぜ。2010-07-25 23:46:25 via Vim @yoshiyoshifujii: よーし!徹夜の「て」ほども保たへんかったけど、コツコツがんばるぜー!2010-07-25 22:57:51 via Vim @yoshiyoshifujii: もう暑くて暑くてイライ…

2010年07月24日のツイート

@yoshiyoshifujii: むー。仕様が膨れ上がってきたなー。朝までには無理っぽいぞー。よし。仕様を削ろう。2010-07-24 23:46:12 via web @yoshiyoshifujii: 最近のカーナビってすごいんだね。iPhoneのBluetoothを使って、フリーハンドで電話したり、iPhoneの音…

P10 (*) リストをランレングス圧縮する。

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…

P09 (**) リストの重複する要素をそれぞれ子リストとしてまとめる。

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…

L-99: Ninety-Nine Lisp Problems p09-p10 までのソースをさらす

前回 L-99: Ninety-Nine Lisp Problems p06-p08 までのソースをさらす - 毎日Learning の続き。日々、意識して簡潔なコードを書くようになってきた。ししょーの言葉にあった、「コーディングもイテレーションや」を念頭に置き、一度動くコードを書いたからと…

2010年07月23日のツイート

@yoshiyoshifujii: 家の中で座ってるだけやのに汗がだっらー出るわ。湿気がスゴイ。2010-07-23 23:21:41 via Twitter for iPhone @yoshiyoshifujii: 蒸し暑さの極みやな。おるだけでじっとりとまとわりつく汗がでる。2010-07-23 22:17:45 via Twitter for iP…

Twitter APIを使って検索取得したJSONをGoogle App Engineに保存するcron

Twitter APIを使って、あるキーワードで取得した結果を、そのままGoogle App EngineのEntityに保存する。というcronを作ったので、メモっておく。app.yamlは以下のようにする。 application: hoge version: 1 runtime: python api_version: 1 - url: /c/.* s…

2010年07月22日のツイート

@yoshiyoshifujii: きょうとなう2010-07-22 17:10:17 via web @yoshiyoshifujii: 今から移動するけど暑いんやろなー。昼間に移動するのはやだなー。2010-07-22 15:03:48 via Vim @yoshiyoshifujii: 会社のネット環境終わってるなー。ぷっつぷつ切れよる。あ…

無料期間に借りた映画-02

2本目は不朽の名作。折角無料なんやし、過去に見て、もっかい見たいけど、借りるのってなんか勿体ないよねーって思う作品をあえて借りたった。いやはや、大正解だーね。

2010年07月21日のツイート

@yoshiyoshifujii: なんじゃそりゃ。 @yoshiyoshifujiiさんの理想のプログラミング言語は「Ada」です。ネットワークRPGを作ると運気が開けます。 URL2010-07-21 22:55:16 via web @yoshiyoshifujii: @zerozerofour いやポイントは、他の人がどう思っても正当…

文字列の前後の全角空白をtrimする

文字列の前後に、半角空白やタブ文字が入っている場合、 " \thoge \t".strip() >>> 'hoge' で除去できるのは、普通。ただ、全角空白が入っていると、 " \thoge \t".strip() >>> '\xe3\x80\x80\thoge' と、上手いこといかない。全角空白は残るし、タブも残る…

キーの配列と値の配列を一発で辞書にする方法

ししょーの教えの元、感動したのでブログっておく。Java的指向の僕が考えたコードは以下。 k_l = ["a", "b", "c"] v_l = ["hoge", "fuga", "ponyo"] result = {} for k,v in zip(k_l, v_l): result[k] = v >>> {'a': 'hoge', 'b': 'fuga', 'c': 'ponyo'} し…