開発環境
- 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 コメント:
コメントを投稿