我正在尝试编写以下代码,但出现错误:
a = [x if lambda x: x%2 ==0 else 0 for x in range(10)]
print(a)
错误指向lambda语句。利用她是违法的吗?是的,为什么,因为我所有的函数都返回布尔True或False。
除了[x if x%2 == 0 else 0 for x in range(10)]
更短之外,您还可以使用lambda,但必须调用它。
使用默认arg(x=x(:
[x if (lambda x=x: x%2 ==0)() else 0 for x in range(10)]
或者通过显式传递x:
[x if (lambda x: x%2 ==0)(x) else 0 for x in range(10)]
任何一种情况的结果:
[0, 0, 2, 0, 4, 0, 6, 0, 8, 0]
为了在列表理解中使用lambda
函数,只需定义一个变量来存储函数:
func = lambda x: x % 2 == 0
a = [x if func(x) else 0 for x in range(10)]
print(a)
输出:
[0, 0, 2, 0, 4, 0, 6, 0, 8, 0]
lambda x: x%2 ==0
是一个函数,而不是一个条件。
为什么不使用这个呢?
a = [x if x%2 == 0 else 0 for x in range(10)]
print(a)