Python3.6.3チュートリアル写経20171111
4.7.6 ドキュメンテーション文字列~5.1.3 リストの内包表記 をやった。
以下メモ。
In [15]: from collections import deque In [16]: queue = deque(["Eric", "John", "Michael"]) In [17]: queue Out[17]: deque(['Eric', 'John', 'Michael']) In [18]: queue.append("Terry") In [19]: queue Out[19]: deque(['Eric', 'John', 'Michael', 'Terry']) In [20]: queue.append("Graham") In [21]: queue Out[21]: deque(['Eric', 'John', 'Michael', 'Terry', 'Graham']) In [22]: queue.popleft() Out[22]: 'Eric' In [23]: queue Out[23]: deque(['John', 'Michael', 'Terry', 'Graham']) In [24]: queue.popleft() Out[24]: 'John' In [25]: queue Out[25]: deque(['Michael', 'Terry', 'Graham'])
- リスト内包表記では、mapやfilterが表現できる(mapは先頭の式で表し、filterはforの後ろのifで表す)
- 数学的には、以下のIn [44]のように書けるとうれしいが、inの後ろに定義されていない変数を書くことはできない
In [42]: vec = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] In [43]: [num for elem in vec for num in elem] Out[43]: [1, 2, 3, 4, 5, 6, 7, 8, 9] In [44]: [num for num in elem for elem in vec] --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-44-805eb91a5d03> in <module>() ----> 1 [num for num in elem for elem in vec] NameError: name 'elem' is not defined