103:配列から条件を満たす要素を取得する
内包表現で、条件をつければよい。
>>> li=['a','mpilrim','foo','b','c','b','d','d'] >>> [elem for elem in li if len(elem) > 1] ['mpilrim', 'foo'] >>> [elem for elem in li if elem != 'b'] ['a', 'mpilrim', 'foo', 'c', 'd', 'd'] >>> [elem for elem in li if li.count(elem) =1] SyntaxError: invalid syntax >>> [elem for elem in li if li.count(elem) ==1] ['a', 'mpilrim', 'foo', 'c']
次の例は、リストから奇数を求めるもの。奇数を求める関数(2で割った余りの値1を返す)を使う。
3つとも同じ結果になる。条件の関数を変えればいろいろな場合に対応できる。
>>> def odd(n):
return n % 2
>>> li = [1,2,3,5,9,10,256,-3]
>>> filter(odd, li)
[1, 3, 5, 9, -3]
>>> [e for e in li if odd(e)]
[1, 3, 5, 9, -3]
>>> filteredList=[]
>>> for n in li:
if odd(n):
filteredList.append(n)
>>> filteredList
[1, 3, 5, 9, -3]