開発環境
- OS X Lion - Apple(OS)
- BBEdit - Bare Bones Software, Inc.(Text Editor)
- プログラミング言語: Python
『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7) のIV部(関数)の17章(関数に関する高度なテクニック)練習問題6.を解いてみる。
その他参考書籍
6.
コード(BBEdit)
sample.py
#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-
# mapは引数に関数を渡す必要がある
# python 3.xではmapはリストではなくmapオブジェクトを返す
# (python 2.xではmapはリストを返す)
a = map(lambda x: x*x, range(10))
b = [x * x for x in range(10)]
for x in [a,b]:
print("{0}: {1}".format(x, type(x)))
for i in x:
print(i)
# リスト内包表記では、map関数を使う場合に比べて、ifステートメントを使ったりして
# より複雑なことができる(ただ、複雑で読みにくい場合はコードの詠みやすさとパフォーマンス
# のバランスが大切。forループの方が読みやすい。リスト内包表記の方が速い。)
c = [x for x in range(10) if x % 2 == 0]
print(c)
# リスト内包表記とforループでリストの作成の速度の比較
import time
n = 1000000
start = time.time()
d = [x for x in range(n)]
t1 = time.time() - start
print("リスト内包表記: {0}秒".format(t1))
start = time.time()
e = []
for x in range(n):
e.append(x)
t2 = time.time() - start
print("for loop: {0}秒".format(t2))
入出力結果(Terminal)
$ ./sample.py <map object at 0x10e256b10>: <class 'map'> 0 1 4 9 16 25 36 49 64 81 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]: <class 'list'> 0 1 4 9 16 25 36 49 64 81 [0, 2, 4, 6, 8] リスト内包表記: 0.10324287414550781秒 for loop: 0.2505049705505371秒 $
0 コメント:
コメントを投稿