当前位置: 首页 > 知识库问答 >
问题:

在Python3的map函数中排除空值

郎正初
2023-03-14

我正在使用map处理Python3中的列表。6:

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直接返回到我想要的结果?

共有2个答案

梁丘波鸿
2023-03-14

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

r = [calc(num) for num in range(1, 10) if calc(num) is not None]
print(r)  # no need to wrap in list() anymore

才能得到你想要的结果。

禄光霁
2023-03-14

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

r = [x for x in map(calc, range(1,10)) if x is not None]

(这只对范围内的每个数字调用calc一次。)

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

 类似资料:
  • 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。 定义一个函数 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。 任何传入参数和自变量必须放在圆括号中

  • 问题内容: 这是我之前的问题的后续工作,但是如果我在其中的映射如何在React的render()方法中调用函数。 示例(此代码在extended的类内): 无论我尝试什么,我总是最终得到“ this.getItemInfo()不是一个函数”。 我在函数内部进行了on操作,实际上是在引用Window对象,但是我似乎找不到改变它的方法。 我累了: 定义为函数getItemInfo(){..} 作为第二

  • 问题内容: 我在不返回任何值时遇到问题。数据库中有符合此条件的帐户。有些困惑为什么他们不被退回。有什么建议? 问题答案: 不要使用。从语义上讲,这是违反直觉的。如果子查询中的 任何 值为,则不返回任何行。 使用代替; 或使用和:

  • 本文向大家介绍Python3 中sorted() 函数的用法,包括了Python3 中sorted() 函数的用法的使用技巧和注意事项,需要的朋友参考一下 描述 sorted() 函数对所有可迭代的对象进行排序操作。 语法 sorted(iterable, key=None, reverse=False)  iterable – 可迭代对象。 key – 主要是用来进行比较的元素,只有一个参数,具

  • 主要内容:使用 delete() 函数从 map 中删除键值对,清空 map 中的所有元素Go语言提供了一个内置函数 delete(),用于删除容器内的元素,下面我们简单介绍一下如何用 delete() 函数删除 map 内的元素。 使用 delete() 函数从 map 中删除键值对 使用 delete() 内建函数从 map 中删除一组键值对,delete() 函数的格式如下: delete(map, 键) 其中 map 为要删除的 map 实例,键为要删除的 map 中键值对的键

  • 本文向大家介绍C ++ STL中的map rend()函数,包括了C ++ STL中的map rend()函数的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将讨论C ++ STL中map::rend()函数的工作,语法和示例。 什么是C ++ STL中的映射? 映射是关联容器,它有助于按特定顺序存储由键值和映射值的组合形成的元素。在映射容器中,数据始终在内部借助其关联的键进行排序。映射容