@r星校長
第3
關:map-reduce - 對映與歸約的思想
python 中有兩個非常常見的內建函式:map()
和reduce()
函式。這兩個函式都是應用於序列的處理函式,map()
用於對映,reduce()
用於歸併。本關目標就是讓學習者了解並掌握map()
和reduce()
函式的相關知識。
map()
函式
map()
函式會根據傳入的函式對指定的序列做對映。map()
函式接收兩個引數,乙個是function
函式,另乙個引數是乙個或多個序列。map()
函式會將傳入的函式依次作用到傳入序列的每個元素,並把結果作為新的序列返回。map()
函式的定義為:
map
(function, sequence[
, sequence,..
.])-
>
list
r =
map(
lambda x: x **2,
[1,2
,3,4
,])print
(list
(r))
輸出結果:
[1,
4,9,
16]
當map()
函式的第二個引數中存在多個序列時,會依次將每個序列中相同位置的元素一起做引數並呼叫function
函式。例如,要對map()
函式傳入的兩個序列中的元素依次求和,程式**如下:
r =
map(
lambda x, y: x + y,[1
,2,3
,4,5
],[6
,7,8
,9,10
])print
(list
(r))
輸出結果:
[7,
9,11,
13,15]
當map()
函式傳入的序列有多個時,我們要注意function
函式的引數數量,應和map()
函式傳入的序列數量相匹配。
reduce()
函式
reduce()
函式把傳入的函式作用在乙個序列[x1, x2, x3, ...]
上,且這個函式必須要接收兩個引數。reduce()
函式把第一次計算的結果繼續和序列中的下乙個元素做累積計算。reduce()
函式的定義為:
reduce
(function, sequence[
, initial])-
> value
function
引數是有兩個引數的函式,reduce()
函式依次在序列中取元素,並和上一次呼叫function
函式的結果做引數,然後再次呼叫function
函式。例如:
from functools import
reduce
r =reduce
(lambda x, y: x + y,[1
,2,3
,4,5
],6)
print
(r)
輸出結果:
21
在上述例子中,程式的計算順序為((((((1+6)+2)+3)+4)+5))
。
小結
map()
和reduce()
函式的應用十分廣泛,在分布式計算領域有著十分重要的運用。我們期待著學習者在今後的開發道路上對map()
和reduce()
函式有更加深刻的體驗。
測試輸入:
80預期輸出:80=
2*2*
2*2*
5測試輸入:
79預期輸出:79=
79測試輸入:
225預期輸出:
225=3*
3*5*
5測試輸入:
123456
預期輸出:
123456=2
*2*2
*2*2
*2*3
*643
# 輸入乙個正整數
n =int
(input()
)# 請在此新增**,將輸入的乙個正整數分解質因數
#********** begin *********#
defresult
(n):
result=
for i in
range(2
,n):
while n!=i:
if n%i==0:
#print(i)
n=n/i
else
:break
#print(n)
int(n)
)return result
#print(result (n))
print
(n,'='
,'*'
.join(
map(
str,result(n)))
)#先將result列表中的元素轉化為字串型別,然後將序列中的元素以指定的字元連線生成乙個新的字串。
python經典例項 python經典例項
本書是python經典例項解析,採用基於例項的方法編寫,每個例項都會解決具體的問題和難題。主要內容有 數字 字串和元組,語句與語法,函式定義,列表 集 字典,使用者輸入和輸出等內建資料結構,類和物件,函式式和反應式程式設計,web服務,等等。python是傑出的指令碼語言,可以為應用程式注入動力,提...
tensorflow 入門經典例項
import tensorflow as tf 發起會話 sess tf.session 兩行都可以執行 具體意思見下方注釋 a tf.variable tf.truncated normal 2,3 0,1,dtype tf.float32,seed 3 a tf.variable tf.rand...
python入門之函式
1.1 函式是一段功能 的封裝,可以被其他程式 重複呼叫。1.2 函式一般包括三要素 函式名 引數和返回值 建立函式要使用def關鍵字 例如 def say name print 名字叫做 format name return name 1 python中的單行注釋和多行注釋在在編譯後會被去掉,如果...