Python---高級函數map, filter, zip, enumerate等的用法


今天看自然語言處理這本書的時候,被這里的高級函數的概念吸引了,因為我覺得所有的函數都只是函數而已,是為了實現特定功能而實現的,不應該有高級,低級之分啊!不過了解之后,發現這幾個函數確實是有點高級,非常好用,所以在這里做一個簡單的總結。

1. Haskell:之前以為它是一個函數,其實它是一個統稱。Haskell 中的函數可以作為參數和回傳值傳來傳去,這樣的函數就被稱作高階函數。

2. map(function, list): 就是對list 中的每一個元素都調用function函數進行處理,返回一個新的列表

1 >>> d=[1,2,3]
2 >>> def f(s):
3 ...     return s*100
4 ...
5 >>> map(f,d)
6 [100, 200, 300]

3. filter(function, list): 對list中的每一個元素都調用function進行判斷,返回滿足條件的元素列表。感覺它跟map很像,是的,但也有細微的差別,看下面代碼就知道了。

 1 >>> filter(lambda x: x>2, d)
 2 [3]  3 >>> filter(f, d)
 4 [1, 2, 3]
 5 >>> map(lambda x: x>2, d)
 6 [False, False, True]  7 >>> def f1(s):
 8 ...     s=s*120
 9 ...
10 >>> map(f1, d)
11 [None, None, None]

4. zip([iterable, ...])

zip()是Python的一個內建函數,它接受一系列可迭代的對象作為參數,將對象中對應的元素打包成一個個tuple(元組),然后返回由這些tuples組成的list(列表)。若傳入參數的長度不等,則返回list的長度和參數中長度最短的對象相同。利用*號操作符,可以將list unzip(解壓)

1 >>> a = [1,2,3]
2 >>> b = [4,5,6]
3 >>> c = [4,5,6,7,8]
4 >>> zipped = zip(a,b)
5 [(1, 4), (2, 5), (3, 6)]
6 >>> zip(a,c)
7 [(1, 4), (2, 5), (3, 6)]
8 >>> zip(*zipped)
9 [(1, 2, 3), (4, 5, 6)]

5. enumerate(s):返回一個包含索引及索引處所在項目的配對。

1 >>> enumerate(d)
2 <enumerate object at 0x02873B98>
3 >>> list(enumerate(d))
4 [(0, 1), (1, 2), (2, 3)]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM