【发布时间】:2020-09-29 22:03:21
【问题描述】:
假设我有一个清单:
foo_list = ["foo", None, "bar", 1, 0, None]
我想将此列表转换为布尔列表,说明哪些元素是None,例如
results = [False, True, False, False, False, True]
一个简单的map 和lambda 就可以了:
list(map(lambda a: a==None, foo_list))
但我想知道我是否可以删除 lambda,并使其更简单,类似于:
list(map((==None), foo_list))
这显然会引发错误,但其他函数式语言通常允许将运算符作为函数,从技术上讲,这个函数甚至没有柯里化(因为它具有所需的所有参数)。
编辑:我知道Python 中的列表推导,这可以通过[(a==None) for a in foo_list] 解决,但这不是我的问题。
【问题讨论】:
-
在 FP 中,运算符只是中缀表示法中的一个函数,具有预定义的优先级和关联性。您已在伪代码示例中部分应用了
==,所以是的,它被柯里化了。
标签: python lambda functional-programming map-function