タグ

ブックマーク / jutememo.blogspot.com (5)

  • Python のジェネレータ (1) - 動作を試す

    1. イテレータとはコンテナの要素を走査するためのオブジェクト これまでに Python の リスト内包表記、イテレータ について調べた。 次は、「ジェネーレータ」。 Python のジェネレータを理解するには、イテレータの理解が不可欠。ジェネレータについて調べる前に、イテレータの復習から行う。 a. イテレータの役割 Python のドキュメント「9. クラス」 における「9.8 イテレータ」の説明を確認すると、 イテレータの使用は Python 全体に普及していて、統一性をもたらしています。背後では、for 文は コンテナオブジェクトの iter() を呼び出しています。… イテレータは、Python において特別扱いされており、for 文と密接な関わりを持っている。 … この関数は next() メソッドの定義されたイテレータオブジェクトを返します。 next() メソッドは一度コン

    Python のジェネレータ (1) - 動作を試す
    goinger
    goinger 2012/04/10
  • Python のデコレータ式 (1)

    1. デコレータの仕組みについて知りたい Python を使っていて、これまでに所々でデコレータを目にしてきた。 関数のネストと f()() 可変引数 クラスメソッド – デコレータ @classmethod, @staticmethod を使って デコレータの仕組みについて理解してないので、そろそろ確認しておくことにする。 デコレータと等価な関数定義 7.5 関数定義 には、デコレータを使った関数定義と、それと同等の式の例が書かれている。 関数定義は一つまたは複数のデコレータ式 (decorator expression) でラップできます。… 例えば、以下のようなコード: @f1(arg) @f2 def func(): pass は、 def func(): pass func = f1(arg)(f2(func)) と同じです。 これを元に、いくつか例を考えてみる。 2. デコレー

    goinger
    goinger 2012/04/10
  • Python のリスト内包表記 - Ruby や Haskell の書き方と比べながら

    0. Python の気になる機能  Python チュートリアル の目次をざっと眺め、目にとまったのは次の二つの機能。 5.1.4 リストの内包表記 9.9 ジェネレータ (generator) 両方とも耳馴れない言葉。 (@_@) まずは、リストの内包表記から調べることに。 1. リスト内包表記の基 a. リストの各要素に関数を適用する 最初は、リスト内包表記の使い方を確認する。例として、「数値のリストの各要素を 2 倍する」 print [x*2 for x in [1,2,3,4,5]] 初めて見たとき、どこから読めばいいのか検討がつかなかった。 読む順番は、 for によって、各要素を取り出し、 各々に対して、操作を加える。 というように、後ろから前へと読み進める。 b. リストの各要素から、条件にあったものを抽出する 次に、同じく数値のリストから、特定の条件に合う要素を抽出す

    Python のリスト内包表記 - Ruby や Haskell の書き方と比べながら
  • Python でハッシュに相当するもの - マップ型の「辞書」に対する操作

    1. マップ型を実装した辞書 Python において、ハッシュに相当するものはマップ型と呼ばれる。 2.3.8 マップ型 によると、 現在のところは標準のマップ型、dictionary だけです。 インターフェスがマップ型で、その実装が辞書。 ただし、Python ではインターフェイスと言わずに、プロトコルと呼ぶ。 cf. 6.4 マップ型プロトコル (mapping protocol) 2.3.8 マップ型に定義されているメソッドを適当に分類しておく。 最初にマップ型のオブジェクトを作成する。 # 辞書: key は変更不能でなければならない。 persons = {"Tarou" : 20, "Hanako" : 15, "Jiro" : 30} 2. 基的な操作 # 要素の値をキーで取得 print persons['Hanako'] # 要素の追加 persons['Saburo

  • Python でアバウトな時間計測

    1. 日付と時間を持つ datetime オブジェクトで時間の計測 特定の処理にかかる時間を計測したい。 6.10.4 datetime オブジェクト によると、 datetime オブジェクトは date オブジェクトおよび time オブジェクトの全ての情報が入っている単一のオブジェクトです。(…) now([tz]) 現在のローカルな日付および時刻を返します。オプションの引数 tz が None であるか指定されていない場合、このメソッドは today() と同様ですが、可能ならば time.time() タイムスタンプを通じて得ることができるより高い精度で時刻を提供します (例えば、プラットフォームが C 関数 gettimeofday() をサポートする場合には可能なことがあります)。 試してみる。 from datetime import datetime from time

  • 1