繁体   English   中英

“无”从何而来? | Python map() function

[英]Where did the "None"s come from? | Python map() function

我写了一个使用 map() function 的小代码:

def function(a):
if a % 2 == 0:
    return a
else: 
    pass
x = map(function, (1,3,2,5,6))
print(set(x))

它应该返回提供的每个偶数,如果它是奇数,我不希望它返回任何东西,所以我输入“通过”。 但是,当我运行它时,output 是这样的:

{2, 6, 无}

这很奇怪,我不确定“None”来自哪里,当我更改用于将 X 打印到 list() 或 tuple() 的 set() function 时,output 如下所示:

[无,无,2,无,6] 或(无,无,2,无,6)

我不确定这里发生了什么,奇数不应该返回任何东西,而是它仍然作为“无”存在。 有没有办法解决这个问题? 最初是什么原因造成的?

每个 Python function 都会返回一些东西。 如果没有执行return语句,或者return语句没有表达式,则 function 返回None 这就是你的None的来源。

如果您想按某些标准过滤值列表,请编写返回 True 或 False(或等效项)的 function,并使用内置filter

>>> def isEven(a):
...     return a % 2 == 0

>>> [*filter(isEven, (1,3,2,5,6))]
[2, 6]

[*generator]将生成器转换为列表。 这也适用于集合,使用{*generator} ,但不适用于元组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM