[英]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.