2013年2月26日火曜日

開発環境

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

その他参考書籍

1.

コード(BBEdit)

sample.py

#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-

import time

# 角括弧はリスト内包表記
a = [x ** 2 for x in range(1000000)]
# 角括弧を丸括弧に変えるとジェネレーターを作成
# ジェネレーターは必要になったらそのつど要素を生成するので
# リストと比較してメモリーの節約に鳴る
# 短所としてはリストより速度が落ちる
b = (x ** 2 for x in range(1000000))
for x in [a,b]:
    print(type(x))

#速度を計測してみる
start = time.time()
for x in a: pass
t = time.time() - start
print("リスト: {0}秒".format(t))
start = time.time()
for x in b:pass
t = time.time() - start
print("ジェネレーター: {0}秒".format(t))

入出力結果(Terminal)

$ ./sample.py
<class 'list'>
<class 'generator'>
リスト: 0.06931400299072266秒
ジェネレーター: 1.2974469661712646秒
$

0 コメント:

コメントを投稿