でフィルタリングしようとする[1,2,0,3,8]
と、if x < 3: return x
で終わり[1,2]
ます。なぜ0
このリストに含まれていないのですか?
def TestFilter(x):
if x < 3:
return x
a = [1,2,0,3,8]
b = filter(TestFilter, a)
print b
True
関数がfilter()を返すたびに、現在の要素が元のリストから新しいリストに追加されます。Python は0
であると見なしFalse
、その他の数値は であると見なしますTrue
。したがってTrue
、数値の代わりに関数を返す必要があります。
def TestFilter(x):
if x < 3:
return True
編集:これはラムダの例です:
a = [1, 2, 3, 0, 4, 8]
print filter(lambda x: x < 3, a)
フィルタリングするときは、True または False を返す必要があります。これがあなたが望むものです:
def TestFilter(x):
return x < 3
これを使用してフィルタリングすると、探している結果が得られます。