小鸟游游游 发表于 2020-9-17 11:58:01

filter, lambda语法错误

求出100以内所有3的倍数的表达式出现了语法错误,不知道为何错误,请大佬帮忙解释一下错误原因。

>>> list(filter(lambda x: x if x%3 == 0, range(1,100)))
SyntaxError: invalid syntax

下面加上else None就不报错。
>>> list(filter(lambda x: x if x%3 == 0 else None, range(1,100)))

Twilight6 发表于 2020-9-17 12:02:59

本帖最后由 Twilight6 于 2020-9-17 12:04 编辑



因为这个是三元运算符的语法格式,需要加上 else ,基本模板:

<符合 if 条件结果> if <条件> else <不符合 if 条件结果>

你不加 else 就会导致语法错误,我们要遵循编程语言的语法

小鸟游游游 发表于 2020-9-17 12:41:32

Twilight6 发表于 2020-9-17 12:02
因为这个是三元运算符的语法格式,需要加上 else ,基本模板:




谢谢大佬的解答,请问下面这个就不会报错,是因为不属于三元运算符吗

>>>

疾风怪盗 发表于 2020-9-17 12:45:53

小鸟游游游 发表于 2020-9-17 12:41
谢谢大佬的解答,请问下面这个就不会报错,是因为不属于三元运算符吗

>>>


这样写是列表推导式

挥舞乾坤 发表于 2020-9-17 13:52:50

list(filter(lambda x:x%3 == 0, range(1,100)))

小鸟游游游 发表于 2020-9-17 15:53:43

感谢楼上几位大佬的解答{:10_254:}
页: [1]
查看完整版本: filter, lambda语法错误