Python.use(better)

《前の記事|記事一覧|次の記事》
Python.use(better)


Python はじめました

■ 組み込み関数 filter
% python3.0
>>> [e for e in "ABC" if ord(e)%2]
['A', 'C']

リストの内包と同等のものは、組み込み関数 filter を使うと、次のように記述できます。

>>> list(filter(lambda e:ord(e)%2,"ABC"))
['A', 'C']

すると、filter によって「イテレーター」が得られるので、

>>> filter(lambda e:ord(e)%2,"ABC")
<filter object at 0xfdcf0>

これを for 文とともに利用すると、

>>> for e in filter(lambda e:ord(e)%2,"ABC"):
...     print(e)
... 
A
C

filter を適用して得られる、各要素 e を順に参照できるようになります。

組み込み関数 map〈Python 2.x 版〉

Python 3.0 では(リストに代えて)イテレーターが得られるようになります。

% python2.6
>>> [e for e in "ABC" if ord(e)%2]
['A', 'C']

リストの内包と同等のものは、組み込み関数 filter を使うと、次のように記述できます。

>>> filter(lambda e:ord(e)%2,"ABC")
'AC'

すると、filter によって「文字列(シーケンス)」が得られるので、これを for 文とともに利用すると、

>>> for e in filter(lambda e:ord(e)%2,"ABC"):
...     print(e)
... 
A
C

filter を適用して得られる、各要素 e を順に参照できるようになります。

3.0 vs. 2.6

% python3.0
...
>>> type(filter)


% python2.6
...
>>> type(filter)

Last updated♪09/03/08