簡體   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