三元运算符中的 Lambda 表达式
Lambda expression in ternary operator
我正在尝试编写以下代码但出现错误:
a = [x if lambda x: x%2 ==0 else 0 for x in range(10)]
print(a)
错误指向 lambda 语句。使用她是否违法?是的,那为什么因为我所有的函数返回的是布尔值 True 或 False。
lambda x: x%2 ==0
是函数,不是条件。
为什么不用这个呢?
a = [x if x%2 == 0 else 0 for x in range(10)]
print(a)
为了在您的列表理解中使用您的 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]
除了 [x if x%2 == 0 else 0 for x in range(10)]
更短之外,您可以使用 lambda,但您必须 调用 它。
使用默认参数 (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]
我正在尝试编写以下代码但出现错误:
a = [x if lambda x: x%2 ==0 else 0 for x in range(10)]
print(a)
错误指向 lambda 语句。使用她是否违法?是的,那为什么因为我所有的函数返回的是布尔值 True 或 False。
lambda x: x%2 ==0
是函数,不是条件。
为什么不用这个呢?
a = [x if x%2 == 0 else 0 for x in range(10)]
print(a)
为了在您的列表理解中使用您的 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]
除了 [x if x%2 == 0 else 0 for x in range(10)]
更短之外,您可以使用 lambda,但您必须 调用 它。
使用默认参数 (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]