我正在通過Python文檔閱讀,以便深入瞭解Python語言並發現了過濾器和映射函數。我之前使用過濾器,但從未映射過,儘管我已經在SO上看到過各種Python問題。Python:過濾器(函數,序列)和映射(函數,序列)之間的區別
在Python教程中閱讀了關於它們之後,我對兩者之間的區別感到困惑。例如,從5.1.3. Functional Programming Tools:
>>> def f(x): return x % 2 != 0 and x % 3 != 0
...
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
和
>>> def cube(x): return x*x*x
...
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
這些看上去幾乎一模一樣的功能同樣給我,讓我去到終端以交互方式運行Python和測試了我自己的情況。對於上面的第一個和第二個實例,我使用了map
,對於第一個(return x % 2 != 0 and x % 3 != 0
),它返回了一個布爾值列表而不是數字。
爲什麼map
有時會返回一個布爾值和其他時間的實際返回值?
有人可以向我解釋完全區別map
和filter
?
現在是有道理的,我看到的過濾條件如何表明該函數與圖什麼。 – samrap
實際上'map()'這個名字也是有意義的,在某些字段中,當map用作動詞時,它意味着找到1對1的對應關係。如在數學中:'map x to y'或在遺傳學中:'將糖尿病映射到基因'。關於Python的一件好事就是這樣的:名字通常是有意義的。 –
這是一個很好的觀點。有趣的是,編程的某些方面與日常例子相似。就像我在代數2中一樣,我們正在學習函數f(x),並且一半的課都被困住了,但這個想法與編程中的函數100%相似。 – samrap