什么会阻止筛选器返回0?

2022-07-06 12:08:49 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图用if x < 3: return x过滤[1,2,0,3,8]时,我最终得到了[1,2]。为什么0不包括在这个列表中?你知道吗

def TestFilter(x):
    if x < 3: 
        return x

a = [1,2,0,3,8]
b = filter(TestFilter, a)
print b

Tags: 列表returnifdeffilterprint试图用testfilter
2条回答
网友
1楼 ·

每次函数返回Truefilter()时,都会将当前元素从原始列表添加到新列表中。Python认为0False,其他任何数字都是True。因此,您需要函数返回True,而不是数字。你知道吗

def TestFilter(x):
    if x < 3: 
       return True

编辑:下面是一个lambda示例:

a = [1, 2, 3, 0, 4, 8]
print filter(lambda x: x < 3, a)
网友
2楼 ·

过滤时,您希望返回True或False。以下是您想要的:

def TestFilter(x):
    return x < 3

当你用这个过滤的时候,你会得到你想要的结果。你知道吗