開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Python (プログラミング言語)
Learning Python (Mark Lutz (著)、Oreilly & Associates Inc)のPART III.(Functions and Generators)、CHAPTER 20(Comprehensions and Generations)、Test Your Knowledge: Quizを解いてみる。
その他参考書籍
Test Your Knowledge: Quiz
コード(BBEdit)
sample.py
#!/usr/bin/env python3 #-*- coding: utf-8 -*- # 1. # square bracktes -> list # parentheses -> generator l = list(range(10)) g = (x for x in range(10)) for x in [l, g]: print(x, type(x)) # 2. g = (x for x in range(10)) print(iter(g) is g) # 3. generator functionにするにはyield文を使う def f(n): for x in range(n): yield x g = f(10) for x in g: print(x) # 4. yield statementは状態を保持して値を返す # (リストは最初に全ての要素を作成、generatorはその都度作成する。 # なのでgeneratorの方がメモリー効率はいい。速度はリストに劣る。 # 5. list comprehensionとmap関数を利用して同様の2つのリストを作成してみる l1 = [x ** 2 for x in range(10)] l2 = list(map(lambda x: x ** 2, range(10))) print(l1, l2, sep='\n')
入出力結果(Terminal)
$ ./sample.py [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] <class 'list'> <generator object <genexpr> at 0x10416dbe0> <class 'generator'> True 0 1 2 3 4 5 6 7 8 9 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] $
0 コメント:
コメントを投稿