Python 返回值为函数时的布尔值

本文探讨了在Python中使用匿名函数过滤非2的倍数整数时遇到的问题。作者尝试输出1到20中所有奇数,但因is_odd函数返回的是一个lambda表达式而非布尔值,导致filter函数未能正确工作。通过分析,明确了问题原因,并提供了正确的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近使用匿名函数时遇到一个问题

输出1-20 中非2的倍数

def is_odd(n):
    return lambda: n%2 == 1
L=list(filter(is_odd,range(1,21)))
print(L)

但是计算素数函数未生效,输出值为:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

原因是is_odd函数返回值为函数,而他的布尔值为true;通过下面代码可以清晰看到:

def is_odd(n):
    return lambda: n%2 == 1

if is_odd(3):
    print("True")
else:
    print("False")

if is_odd(6):
    print("True")
else:
    print("False")

可以看到,无论传入参数是否为2的倍数,都会被输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值