python之map和reduce的區別以及zip使用
①從引數方面來講:
map()函式:
map()包含兩個引數,第一個是引數是一個函式,第二個是序列(列表或元組)。其中,函式(即map的第一個引數位置的函式)可以接收一個或多個引數。
reduce()函式:
reduce() 第一個引數是函式,第二個是 序列(列表或元組)。但是,其函式必須接收兩個引數。
②從對傳進去的數值作用來講:
map()是將傳入的函式依次作用到序列的每個元素,每個元素都是獨自被函式“作用”一次;(請看下面的栗子)
reduce()是將傳人的函式作用在序列的第一個元素得到結果後,把這個結果繼續與下一個元素作用(累積計算),
最終結果是所有的元素相互作用的結果。(請看下面的栗子)
舉個栗子:
map()函式:
- # 傳入一個引數
- def one_p(x):
- return x * x
- print'map1.1:', map(one_p, range(1, 5))
- #結果:map1.1: [1, 4, 9, 16]
- print'map1.2:', map(one_p, [1, 2, 3, 4, 5, 6])
- #結果:map1.2: [1, 4, 9, 16, 25, 36]
- # 傳入多個引數
- a = [1, 2, 3, 4, 5]
- b = [1, 1, 6, 2, 3]
- c = [1, 2, 3, 4, 5]
- s = map(lambda (x, y, z): x * y * z, zip(a, b, c))
- print'map2:', s
- #結果:map2: [1, 4, 54, 32, 75]
- r1 = reduce(lambda x, y: x * y, (2, 2, 6, 2)) #運算過程:(((2*2)*6)*2)
- r2 = reduce(lambda x, y: x * y, (2, 2, 6), 2) #<span style="font-family: Arial, Helvetica, sans-serif;">運算過程:(((2*2)*6)*2)</span>
- print'r1:', r1 # 結果:r1: 48
- print'r2:'
zip() 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成一個個元組,然後返回由這些元組組成的列表。
如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 * 號操作符,可以將元組解壓為列表。
>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b) # 打包為元組的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c) # 元素個數與最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped) # 與 zip 相反,可理解為解壓,返回二維矩陣式
[(1, 2, 3), (4, 5, 6)]
列表元素依次相連:
# -*- coding: UTF-8 -*- l =['a','b','c','d','e','f']print l #列印列表print zip(l[:-1],l[1:])
輸出結果:
['a','b','c','d','e','f'][('a','b'),('b','c'),('c','d'),('d','e'),('e','f')]
相關推薦
python之map和reduce的區別以及zip使用
①從引數方面來講:map()函式:map()包含兩個引數,第一個是引數是一個函式,第二個是序列(列表或元組)。其中,函式(即map的第一個引數位置的函式)可以接收一個或多個引數。reduce()函式:reduce() 第一個引數是函式,第二個是 序列(列表或元組)。但是,其函
Python中map和reduce函數
courier ref tail erl position 必須 第一個 http title ①從參數方面來講: map()函數: map()包含兩個參數,第一個是參數是一個函數,第二個是序列(列表或元組)。其中,函數(即map的第一個參數位置的函數)可以接收一個或多個參
Python的map和reduce
too reduce rom from brush () 下一個 list 生成式 map(): map()函數接收兩個參數,一個是函數,一個是Iterable >>> l = [i for i in range(10)] #[0, 1, 2, 3,
ECMAScript5/6新特性之map和reduce
/*map和reduce*/ //map():接收一個函式,將原陣列的所有元素用函式處理後放入新陣列返回 //例如將一個字串陣列轉為int陣列 let crr = ['1','2','3']; crr = crr.map(e=>parseInt(e)); console.log(typeof(
JDK8lambda表示式之map和FlatMap區別
import java.util.ArrayList; import java.util.List; import java.util.function.Supplier; import java.ut
Python之is 和 ==的區別
""" 變數: id: 在記憶體中儲存的位置;id(a) value: == type:變數的資料型別; type(a) ==: value, type is: 三個都判斷 ==:只判斷value和type,不判斷id ** a is b =
Python中的map()和reduce()以及一些栗子
一.map()函式接收兩個引數,一個是函式,一個是iterable, map將傳入的函式依次作用到序列的每個元素,並把結果作為新的Iterator返回。二.reduce()把一個函式作用在一個序列上,這個函式必須接收兩個引數, reduce把結果繼續和序列的下一個元素做累積計
python 之 map/reduce
keyword 運算 論文 說明 htm 實現 而且 下一個 html Python內建了map()和reduce()函數。 如果你讀過Google的那篇大名鼎鼎的論文“MapReduce: Simplified Data Processing on Large Clust
Python自學筆記-map和reduce函數(來自廖雪峰的官網Python3)
求和 rabl style 序列 list port lambda char att 感覺廖雪峰的官網http://www.liaoxuefeng.com/裏面的教程不錯,所以學習一下,把需要復習的摘抄一下。 以下內容主要為了自己復習用,詳細內容請登錄廖雪峰的官網查看。
python 字符串編碼 str和unicode 區別以及相互轉化 decode('utf-8') encode('utf-8')
encode unicode 字符串 code com bubuko src 區別 分享圖片 python 字符串編碼 str和unicode 區別以及相互轉化 decode('utf-8') encode('utf-8'
Python中的 Map 和 Reduce
imp func turn 學習 for 就是 函數 依次 每一個 03 Map map()傳入的第一個參數是f,map將f依次作用到序列的每個元素,並把結
Python面試之 is 和 == 的區別
面試實習生的時候,當問到 is 和 == 的區別時,很多同學都答不上來,搞不清兩者什麼時候返回一致,什麼時候返回不一致。本文我們來看一下這兩者的區別。 我們先來看幾個例子: 上面的輸出結果中為什麼有的 is 和 == 的結果相同,有的不相同呢?我們來看下官方文件中對於 is 和
Python:使用map和reduce實現整數字符串轉換為整數(忽略int函式)
#!/usr/bin/env python # coding:UTF-8 """ @version: python3.x @author:曹新健 @contact: [email protected] @software: PyCharm @file: map和
Python內建了map()和reduce()函式。
我們先看map。map()函式接收兩個引數,一個是函式,一個是Iterable,map將傳入的函式依次作用到序列的每個元素,並把結果作為新的Iterator返回。 舉例說明,比如我們有一個函式f(x)=x2,要把這個函式作用在一個list [1, 2, 3, 4,
Java之阻塞和非阻塞以及同步和非同步的區別
阻塞和非阻塞,同步和非同步1 例子故事:老王燒開水。出場人物:老張,水壺兩把(普通水壺,簡稱水壺;會響的水壺,簡稱響水壺)。老王想了想,有好幾種等待方式1.老王用水壺煮水,並且站在那裡,不管水開沒開,每隔一定時間看看水開了沒。-同步阻塞老王想了想,這種方法不夠聰明。2.老王還
【python】map、reduce和filter
map函式 map(func, Iterable) 接收一個func函式和一個序列Iterable,將Iterable的每個元素經過func函式處理後,返回一個新的Iterable。 類似列表推導式:[func(item) for item in iterable] #
python之map/reduce函式、sorted排序及類與物件
三個大資料常用重要函式python map()函式 map()函式接收兩個引數,一個是函式,一個是序列map將傳入的函式依次作用到序列的每個元素,並把結果作為新的list返回。map的兩種使用方式:1、使用lambda 2、直接呼叫函式eg:'''遍歷map的兩種使用
每天一點——python map()和reduce()
轉自:http://www.pythoner.com/46.html 今天要介紹的是Python函數語言程式設計中的另外兩個內建函式map()和reduce(),而不是Google的MapReduce。 1.map() 格式:map( func, seq1[, se
python的map和zip操作
如果要將一個string list轉換成int list (list裡每個string都轉成int),比如 ['0','1','2'] -> [0,1,2] 可以使用: [int(x) for x in list] 或者使用map操作: map(func, list)
Python:利用map和reduce編寫一個str2float函式,把字串'123.456'轉換成浮點數123.456
# -*- coding: utf-8 -*- from functools import reduce def str2float(s): def fn(x, y): return x * 10 + y def char2num(s):