|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
3. 你可以利用 filter() 和 lambda 表达式快速求出 100 以内所有 3 的倍数吗?
g = filter(lambda x:True if x % 3 == 0 else False,range(101))
print(list(g))
这是正确答案,但是我做的时候发现一个奇怪的问题
下面是我写的代码
g = filter(lambda x:True if x % 3 == 0 ,range(101))
print(list(g))
我跟正确答案在if判断中,少了一个else false,我运行时报错了,错误是无效代码。我这里有点奇怪,我当时想的是,如果输入的x没有满足条件,那么lambda函数应该就会自动输出None,而None在条件判断中为False,所以就不用写else的判断了。但是运行时出现了无效代码的错误。我想知道我错在哪。
三元表达式和列表推导式不一样
- >>> [i for i in range(10) if i % 2 == 0] # 获取 10 以内的偶数
- [0, 2, 4, 6, 8]
- >>> 1 if 1 == 1 else 0
- 1
- >>> [i for i in range(10) if i % 2 == 0 else None] # 错误
- SyntaxError: invalid syntax
- >>> 1 if 1 == 1 # 错误
- SyntaxError: invalid syntax
复制代码
PS:如果你的问题已解决,请设置【最佳答案】。
|
|