『Effective Python』の続き。まさかの連投。
Effective Python: 59 Specific Ways to Write Better Python (Effective Software Development Series)
- 作者: Brett Slatkin
- 出版社/メーカー: Addison-Wesley Professional
- 発売日: 2015/03/08
- メディア: ペーパーバック
- この商品を含むブログ (1件) を見る
リスト内包とmap/filter
はどちらが先に登場したのだろうか。PEP 202 - PEP 202 -- List Comprehensions | Python.orgを見るとリスト内包が後のように思われる。
https://hg.python.org/cpython/raw-file/v2.0.1/Misc/NEWSを見る限りPython2.0から登場したらしい。
入門書だとリスト内包は難しいから…と誤魔化しているのもあったりするが、そんなに難しくは無いと思う。
平方のリストを作りたい、という場合、
よくある方法
squares = [] for x in range(10): squares.append(x**2) print(squares)
map/filter
で頑張った例
squares = list(map(lambda x: x**2, range(10))) print(squares)
リスト内包
squares = [x**2 for x in range(10)] print(squares)
となるが、リスト内包が一番シンプルだしわかりやすい。
map(lambda x: x**2, filter(lambda x: x % 2 == 0, a))
と書いてあって一体何をしているのかすぐわかるだろうか、という話である。