2012年6月30日土曜日

開発環境

『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7) のIV部(関数)17章(関数に関する高度なテクニック)練習問題1を解いてみる。

1.

リスト内包表記の角括弧を丸括弧に変えると、ジェネレータ式になり、リストではなくジェネレータオブジェクトを返す。リストは一度に要素を全て生成、ジェネレータ式はその反復の都度要素を生成するのでリストの方が高速、ジェネレータの方がメモり節約になる。

コード(TextWrangler)

sample.py

#!/usr/bin/env python
#encoding: utf-8

l = [pow(x,2) for x in range(10)]
g = (pow(x,2) for x in range(10))

for x in (l,g):
 print(type(x))
 for y in x:
  print(y,end=' ')
 print()

入出力結果(Terminal)

$ ./sample.py
<class 'list'>
0 1 4 9 16 25 36 49 64 81 
<class 'generator'>
0 1 4 9 16 25 36 49 64 81 
$

0 コメント:

コメントを投稿