簡體   English   中英

Python過濾器無法正常工作?

[英]Python filter not working as expected?

為什么以下兩個過濾器表達式返回相同的結果?

A = [(1,(1,2,3))]
A1 = filter(lambda (a,b): b, A)
A2 = filter(lambda ab: ab, A)
A1 == A2
>>>> True

filter過濾掉傳遞給函數的參數,該參數返回False -ish值。 (1, 2, 3)(1, (1, 2, 3))在布爾上下文中返回True ,因此保留在返回的列表中。

您需要map

A1 = map(lambda (a,b): b, A)
A2 = map(lambda ab: ab, A)

僅供參考,以下值是False -ish值,而其他所有值都是True -ish:

0
None
False
''
[]
()
# and all other empty containers

這不是錯誤。 filter接受元素,其中函數返回True -y值。

在第一種情況下,將元組解壓縮為1(1,2,3)然后查看第二個( (1,2,3) )-這是真的(非空),所以filter返回整個事情。

在第二種情況下,您查看元組(1,(1,2,3)) 那也不是空的,因此它再次返回整個東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM