python中的映射和比较

假设我有一个列表:

foo_list = ["foo", None, "bar", 1, 0, None]

我想将这个列表转换成一个布尔列表,说明哪些元素是None,比如

results = [False, True, False, False, False, True]

一个简单maplambda会做:

list(map(lambda a: a==None, foo_list))

但我想知道我是否可以删除 lambda,并使其更简单,大致如下:

list(map((==None), foo_list))

这显然会引发错误,但其他函数式语言通常允许将运算符作为函数使用,而且从技术上讲,这个函数甚至没有柯里化(因为它具有所需的所有参数)。

编辑:我知道 list comprehensions in Python,这可以解决为[(a==None) for a in foo_list],但这不是我的问题。


qq_笑_17
浏览 96回答 1
1回答

扬帆大鱼

我会说列表理解是 Pythonic 方式,但如果你真的想要,你可以做import functoolsimport operatorfoo_list = ["foo", None, "bar", 1, 0, None]print(list(map(functools.partial(operator.is_, None), foo_list)))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python