Java/Python 導入ガイド:《6》組み込み関数 filter を使って

記事一覧入門編基礎編応用編中級編

Java プログラマーのための Python 導入ガイド〈初級/入門編〉《Jython2.5.0》
《6》組み込み関数 filter を使って

《著》森こねこ・本間りす・小粒ちゃん《監修》小泉ひよ子とタマゴ倶楽部
第1版♪2003/05/23 ● 第2版♪2009/04/03

》作業中です《 2006年7月 3日 (月)

■ 概要

Java™ Programming Language〔JPL〕の事例を使って、JavaJython との違いを学びます。

組み込み関数 filter を使って

 Python では、組み込み関数 filter を使って、同様のことができます。

《組み込み関数 filter》
filter(function or None, sequence) -> list, tuple, or string

式 function(e) を評価したときに True となるような、sequence 内の各要素 e を列挙した、リスト/タプル/文字列をリターン値とします。

>>> s = "Java Programming Language"
>>> filter(str.isupper, s)
'JPL'

文字列 s の中から、大文字 isupper でないものを削除した文字列が得られます。

>>> t = tuple(range(5))
>>> filter(lambda e: e%2, t)
(1, 3)

タプル t の中から、奇数 e%2 でない要素を削除した、新たなタプルが得られます。

リスト:list

>>> c = range(5)
>>> filter(cond, c)
[1, 3]
>>> filter(lambda e:e%2, c)
[1, 3]
>>> c
[0, 1, 2, 3, 4]

組み込み関数 filter を利用すると、リスト c から、奇数でない要素を削除した、新たなリストが得られます。このとき、もとの c には影響しません。

集合:set

>>> c = set(range(5))
>>> set(filter(cond, c))
set([1, 3])
>>> set(filter(lambda e:e%2, c))
set([1, 3])
>>> c
set([0, 1, 2, 3, 4])

組み込み関数 filter を利用すると、集合 c から、奇数でない要素を削除した、新たな集合が得られます。このとき、もとの c には影響しません。

写像:dict

>>> c = dict([(e,"ABCDE"[e]) for e in range(5)])
>>> dict([(e,c[e]) for e in filter(cond, c)])
{1: 'B', 3: 'D'}
>>> dict([(e,c[e]) for e in filter(lambda e:e%2, c)])
{1: 'B', 3: 'D'}
>>> c
{0: 'A', 1: 'B', 2: 'C', 3: 'D', 4: 'E'}

組み込み関数 filter を利用すると、辞書 c から、奇数でないキー要素を含む要素対を削除した、新たな辞書が得られます。このとき、もとの c には影響しません。

Last updated♪2009/08/04