这个表达式有什么作用?
my_tuple = (0, 1, 2, 3, 4, 5)
foo = list(filter(lambda x: x-0 and x-1, my_tuple))
print(foo)
从上面的方程中预计会得到什么输出?
lambda
是创建单线性函数的一种快速方法,其中 :
的左侧是函数的参数,右侧是返回值。
让我们从内到外分解这个表达式:
lambda x:x-0 and x-1
是一个函数,它接受 x
,计算 x-0
(即 x
)、x-1
,并在它们之间执行逻辑“与”运算。如果 True
两边都不为零,则此函数将返回 and
。换句话说,如果 True
既不是 x
也不是 0
,它将返回 1
。filter(lambda x:x-0 and x-1, my_tuple)
采用 my_tuple
,并使用上面定义的函数计算每个元素,仅保留返回 True
list
应用于 filter
调用的结果会将生成的 filter
对象转换为列表。所以,总结一下 - 这个调用返回一个
list
,其中包含 my_tuple
中不是 0
或 1
的所有元素。