1. 程式人生 > >python之map和reduce的區別以及zip使用

python之map和reduce的區別以及zip使用

①從引數方面來講:

map()函式:

map()包含兩個引數,第一個引數是一個函式,第二個序列(列表或元組其中,函式(即map的第一個引數位置的函式)可以接收一個或多個引數

reduce()函式:

reduce() 第一個引數是函式,第二個是 序列(列表或元組)。但是,其函式必須接收兩個引數

②從對傳進去的數值作用來講:

map()是將傳的函式依次作用到序列的每個元素,每個元素都是獨自被函式“作用”一次;(請看下面的栗子)

reduce()是將傳人的函式作用在序列的第一個元素得到結果後,把這個結果繼續與下一個元素作用(累積計算),

最終結果是所有的元素相互作用的結果。(請看下面的栗子)

舉個栗子:

map()函式:

  1. # 傳入一個引數
  2. def one_p(x):  
  3.     return x * x  
  4. print'map1.1:', map(one_p, range(15))   
  5. #結果:map1.1: [1, 4, 9, 16]
  6. print'map1.2:', map(one_p, [123456])  
  7. #結果:map1.2: [1, 4, 9, 16, 25, 36]
  8. # 傳入多個引數
  9. a = [12345]  
  10. b = [11623]  
  11. c = [12345]  
  12. s = map(lambda (x, y, z): x * y * z, zip(a, b, c))  
  13. print'map2:', s  
  14. #結果:map2: [1, 4, 54, 32, 75]
reduce()函式:
  1. r1 = reduce(lambda x, y: x * y, (2262))  #運算過程:(((2*2)*6)*2)
  2. r2 = reduce(lambda x, y: x * y, (226), 2)  #<span style="font-family: Arial, Helvetica, sans-serif;">運算過程:(((2*2)*6)*2)</span>
  3. print'r1:', r1  # 結果:r1: 48
  4. print'r2:'
    , r2  # 結果:r2: 48

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')]

相關推薦

pythonmapreduce區別以及zip使用

①從引數方面來講:map()函式:map()包含兩個引數,第一個是引數是一個函式,第二個是序列(列表或元組)。其中,函式(即map的第一個引數位置的函式)可以接收一個或多個引數。reduce()函式:reduce() 第一個引數是函式,第二個是 序列(列表或元組)。但是,其函

Pythonmapreduce函數

courier ref tail erl position 必須 第一個 http title ①從參數方面來講: map()函數: map()包含兩個參數,第一個是參數是一個函數,第二個是序列(列表或元組)。其中,函數(即map的第一個參數位置的函數)可以接收一個或多個參

Pythonmapreduce

too reduce rom from brush () 下一個 list 生成式 map(): map()函數接收兩個參數,一個是函數,一個是Iterable >>> l = [i for i in range(10)] #[0, 1, 2, 3,

ECMAScript5/6新特性mapreduce

/*map和reduce*/ //map():接收一個函式,將原陣列的所有元素用函式處理後放入新陣列返回 //例如將一個字串陣列轉為int陣列 let crr = ['1','2','3']; crr = crr.map(e=>parseInt(e)); console.log(typeof(

JDK8lambda表示式mapFlatMap區別

import java.util.ArrayList; import java.util.List; import java.util.function.Supplier; import java.ut

Pythonis ==的區別

""" 變數:     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自學筆記-mapreduce函數(來自廖雪峰的官網Python3)

求和 rabl style 序列 list port lambda char att 感覺廖雪峰的官網http://www.liaoxuefeng.com/裏面的教程不錯,所以學習一下,把需要復習的摘抄一下。 以下內容主要為了自己復習用,詳細內容請登錄廖雪峰的官網查看。

python 字符串編碼 strunicode 區別以及相互轉化 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:使用mapreduce實現整數字符串轉換為整數(忽略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.老王還

pythonmapreducefilter

map函式 map(func, Iterable) 接收一個func函式和一個序列Iterable,將Iterable的每個元素經過func函式處理後,返回一個新的Iterable。 類似列表推導式:[func(item) for item in iterable] #

pythonmap/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

pythonmapzip操作

如果要將一個string list轉換成int list (list裡每個string都轉成int),比如 ['0','1','2'] -> [0,1,2] 可以使用: [int(x) for x in list] 或者使用map操作: map(func, list)

Python:利用mapreduce編寫一個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):