python中的map、filter、reduce函數

來源:互聯網
上載者:User

標籤:

python中的map、filter、reduce函數(2013-02-19 14:43:36) 轉載
   
三個函數比較類似,都是應用於序列的內建函數。常見的序列包括list、tuple、str。 1.map函數map函數會根據提供的函數對指定序列做映射。map函數的定義:map(function, sequence[, sequence, ...]) -> list通過定義可以看到,這個函數的第一個參數是一個函數,剩下的參數是一個或多個序列,傳回值是一個集合。function可以理解為是一個一對一或多對一函數,map的作用是以參數序列中的每一個元素調用function函數,返回包含每次function函數傳回值的list。比如要對一個序列中的每個元素進行平方運算:map(lambda x: x ** 2, [1, 2, 3, 4, 5])返回結果為:[1, 4, 9, 16, 25]在參數存在多個序列時,會依次以每個序列中相同位置的元素做參數調用function函數。比如要對兩個序列中的元素依次求和。map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])map返回的list中第一個元素為,參數序列1的第一個元素加參數序列2中的第一個元素(1 + 2),list中的第二個元素為,參數序列1中的第二個元素加參數序列2中的第二個元素(3 + 4),依次類推,最後的返回結果為:[3, 7, 11, 15, 19]要注意function函數的參數數量,要和map中提供的集合數量相匹配。如果集合長度不相等,會以最小長度對所有集合進行截取。當函數為None時,操作和zip相似:map(None, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])返回結果為:[(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]     2.filter函數filter函數會對指定序列執行過濾操作。filter函數的定義:filter(function or None, sequence) -> list, tuple, or stringfunction是一個謂詞函數,接受一個參數,返回布爾值True或False。filter函數會對序列參數sequence中的每個元素調用function函數,最後返回的結果包含調用結果為True的元素。傳回值的類型和參數sequence的類型相同比如返回序列中的所有偶數:def is_even(x):return x & 1 != 0 filter(is_even, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])返回結果為:[1, 3, 5, 7, 9]如果function參數為None,返回結果和sequence參數相同。     3.reduce函數reduce函數,reduce函數會對參數序列中元素進行累積。reduce函數的定義:reduce(function, sequence[, initial]) -> valuefunction參數是一個有兩個參數的函數,reduce依次從sequence中取一個元素,和上一次調用function的結果做參數再次調用function。第一次調用function時,如果提供initial參數,會以sequence中的第一個元素和initial作為參數調用function,否則會以序列sequence中的前兩個元素做參數調用function。reduce(lambda x, y: x + y, [2, 3, 4, 5, 6], 1)結果為21(  (((((1+2)+3)+4)+5)+6)  )reduce(lambda x, y: x + y, [2, 3, 4, 5, 6])結果為20 注意function函數不能為None。

python中的map、filter、reduce函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.