3

でフィルタリングしようとする[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
4

2 に答える 2

10

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)
于 2012-08-16T18:23:41.710 に答える
3

フィルタリングするときは、True または False を返す必要があります。これがあなたが望むものです:

def TestFilter(x):
    return x < 3

これを使用してフィルタリングすると、探している結果が得られます。

于 2012-08-16T18:27:35.370 に答える