HEADこの広告は、90日以上更新していないブログに表示しています。一部の関数がイテレータを返すよう変更になったということなので、この機会にPython3を触りつつitertoolsモジュールについてひととおり学んでみた。documentation。そのため添えてあるメモは基本的にpython2.6が前提。2.7や3.2で追加されたり変更された点があればその旨を適宜書いてあります。print関数について今回はPython3.2であれこれしたのでprint関数を使ってます。print_functionとする必要があります。バージョン毎のメソッドの実装状況それぞれのバージョン毎で使えるメソッドが多少違うので表にしてみた。itertools.count([n])"""引数nで始まる連続した整数を無限に返すイテレータを生成する。[step])のようにステップ数を指定できるようになった。itertools.cycle(iterable)"""引数に与えられたイテレータの要素を次々と返す。最後まで行くとStopIterationを起こさずに最初に戻って延々繰り返す。これは最初にイテレータのコピーを保存してあるかららしい。そのため与えるイテレータが大きい場合、メモリ消費量が増える。times])"""オブジェクトを指定した回数返すイテレータを生成する。回数を指定しなければ無限に値を返すイテレータとなる。itertools.chain(*iterables)"""引数に複数のイテレータを受け取り、それらがあたかもひとつのイテレータであるかのように全ての要素を生成するイテレータを返す。selectors)"""dataとselectorsふたつのイテレータを受け取る。セレクターが真になるデータを返すイテレータを生成する。iterable)"""predicateが真である限り無視し続けその後はすべての要素を返すイテレータを返す。iterable)"""predicateが真である限りiterableから要素を返すイテレータを返す。key])"""連続する要素をグループ化する。0x01232370>尚、値が等しくても連続していなければグループ化されないので必要に応じて先にソートしておく。step])"""イテレータを返すタイプのリストのスライス(list[start:stop:step])。ステップを指定できる(stopは必須)stopをNoneにすることで最後の要素まで返すが、渡したイテレータが無限イテレータだと無限ループに陥るので注意。*iterables)"""イテレータの要素を引数として関数を呼び出すイテレータを返す。functionがNoneの場合は引数のタプルを返す。Python3では2系で組み込みのmap関数がこのimapに置き換えられた。iterable)"""関数の引数が単一のイテレータにタプルとして格納されている場合はimapの代わりにこっちを使う。n=2])"""ひとつのイテレータから独立したn個(デフォルトでは2個)の独立したイテレータを返す。どのサイトみても「Unixのteeコマンドに似てる」と書いてある。10]"""なお、元のイテレータとteeで生成されたイテレータは共有関係にあるのでteeで新たなイテレータを生成した後はオリジナルのイテレータを使用してはいけない。itertools.izip(*iterables))"""各イテレータの要素をタプルに結合するイテレータを返す。長さは引数に与えたイテレータの最も短いものに揃えられる。溢れた要素は無視される。Python3では2系で組み込みのzip関数がこのizipに置き換えられた。fillvalue])"""python3ではizip_longestからzip_longestへ名称変更。izipとは逆に最も長いイテレータに長さを揃える。足りない部分はfillvalueに値を指定すればそれで埋められる。指定しなければNoneが入る。repeat])"""デカルト積というやつらしい。ネストしたループと等価。r])"""順列を求める。rは一度に取り出す要素数を指定する。rを指定しなかったりNoneを与えると、rはiterableの長さとなる。それぞれの順列はタプルで格納される。r)"""こちらは組み合わせ。r)"""重複を持った組み合わせはこっちを使う。itertools.accumulate(iterable)"""Numpyのaccumulateがモデルらしい(Numpy触ったことない)。要素を取り出した時点での累計が返る。110]もっとカッコイイ例が書けるようになりたい。ヶ月)仕事や趣味のプログラミングでの備忘録とか。インターネットお絵描きマンでもありますが、そういうのはここには載せないと思います。twitterとかで見てね。kk6はてなブログをはじめよう!kk6さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。