首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >排除Python3的map函数中的空值

排除Python3的map函数中的空值
EN

Stack Overflow用户
提问于 2018-07-05 19:03:37
回答 2查看 4.5K关注 0票数 5

我正在使用map在Python3.6中处理一个列表:

代码语言:javascript
复制
def calc(num):
    if num > 5:
        return None
    return num * 2


r = map(lambda num: clac(num), range(1, 10))
print(list(r))

# => [2, 4, 6, 8, 10, None, None, None, None]

我期望的结果是:[2, 4, 6, 8, 10]

当然,我可以使用filter来处理map结果。但是有没有办法让map直接返回到我想要的结果呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-05 19:27:07

map不能直接过滤掉项目。它为每一项输入输出一项。您可以使用列表合并从结果中过滤出None

代码语言:javascript
复制
r = [x for x in map(calc, range(1,10)) if x is not None]

(这仅对范围内的每个号码调用一次calc。)

旁白:不需要编写lambda num: calc(num)。如果您想要一个返回calc结果的函数,只需使用calc本身。

票数 7
EN

Stack Overflow用户

发布于 2018-07-05 19:06:10

使用map本身时不会,但您可以将map()调用更改为:

代码语言:javascript
复制
r = [calc(num) for num in range(1, 10) if calc(num) is not None]
print(r)  # no need to wrap in list() anymore

得到你想要的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51189698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档