map_between をやってみる -slice使ったっていいじゃない編-

[1,2,3,4,5]を与えられたら[3,5,7,9]を返すようなプログラムを書く。元の記事は以下。map_between をやってみる - Study08.net 対シンバシ殲滅用人型機動兵器 リストの隣接要素を次々に処理する - 今川館 #! /usr/bin/env python # -*- coding: utf-8 -*- fr…

RPythonで正規表現を使えるようにする。 PyPy Advent Calendar 19日目

PyPy Advent Calendar 19日目の担当として、ピンチヒッター[twitter:@yanolab]行きます!本来2週目は24日に担当ということでのんびりしてたら前の方々が忙しいらしく急遽回って参りました。精一杯がんばるので、どうかいじめないでください。。。 > pypyjaな…

オリジナルのPyPyを手に入れよう。 ~~PyPy Advent Calendar 11日目~~

PyPy Advent Calendar 11日目の担当として[twitter:@yanolab]が書きます。 PyPyとは PyPyにはややこしいことに、以下の2つの意味があります。公式に別々の名前で呼ぶように呼びかけているみたいです。 制限付きのPython(RPython)で実装されたPython処理系 高…

gist.githubを使ってみた。

gist.githubはコードの断片を共有するとかなんとかで、 ブログにコードを書くより良さそうなので使ってみた。 こんな感じ。いい感じ?

pythonをソースからコンパイルするときのメモ

コンパイル環境はUbuntu10.10pythonはコンパイル時にzlibなどの開発ライブラリがないとモジュール作ってくれない。 なので、以下のコマンドを実行して必要そうなライブラリをインストールしておく。sudo aptitude install libzip-dev libssl-dev libreadline…

pythonで__line__を使う

データの定義位置を取得したいみたいなことを清水川さんのページで見た。pythonにはC言語のマクロみたいに__line__がないので、frameオブジェクトからファイル行数取ってとかを関数でやるのが一般的みたい。また、atsuoishimotoの日記の記事では、簡易DSLみ…

ディスクリプタとプロパティ

昨日のエキPy読書会でをお勉強しました。ディスクリプタとはオブジェクトの属性が参照されたときの動作をカスタマイズするためのものです。特に__get__と__set__を両方持つものをデータディスクリプタというらしいです。このディスクリプタはクラスの属性と…

pythonでrun-length decode

Prologの練習問題サイトにrun-length encodingがあったのでやってみます。 PrologSite問題はこれ。 1.12 (**) Decode a run-length encoded list. Given a run-length code list generated as specified in problem 1.11. Construct its uncompressed versio…

リスト内包表記とジェネレータの比較

エキPy読書会でジェネレータお勧め!どんどん使うべし的な話がありました。 ジェネレータの使いどころとしては、膨大なデータを扱うときや実行に時間がかかるときということでした。 リスト内包と比べるとメモリの使用量が少なくて済むことや、複雑な処理も…

pythonでrun-length encoding

Prologの練習問題サイトにrun-length encodingがあったのでやってみます。 PrologSite問題はこれ。 1.10 (*) Run-length encoding of a list. Use the result of problem 1.09 to implement the so-called run-length encoding data compression method. Con…

初トラックバックだ。

ブログ読んでたら0と1を次々と返したいなんていうのがあったのでやってみた。 Algorithm - 0と1を次々と返す簡単なお仕事 class Cycle(object): def __init__(self, vals=[0,1]): import itertools self.it = itertools.cycle(vals) def __call__(self): ret…

pythonでuniq

今日はpythonでuniqを実装してみましたよ。 def iuniq(it): if hasattr(it, '__iter__'): readed = set() for i in it: if i in readed: continue else: readed.add(i) yield i else: raise TypeError('argument has not __iter__.') 書いてから思ったけど、…

pythonでflatten

rubyには配列を平滑化するflattenなんていうメソッドがありますが、 意外にもpythonにはありませんでした。(当然あるものと思ってましたが^^;) ググってみるとやっぱいろんな人がサンプルコード書いてますね。 そこで、自分でもflattenかいてみました。…

オレオレIPアドレス範囲表記のパース

ツールとかを作っているとIPアドレスの範囲を指定して書きたいことがたまにあります。 例えば192.168.1.10 - 192.168.1.20の範囲の生きているPCをpingで調べたいときなど。 このIP範囲を表すとき、192.168.1.[10-20]なんて指定したいわけです。 こんな表記の…