map()
函數接收兩個參數,一個是函數,一個是序列,map
將傳入的函數依次做用到序列的每一個元素,並把結果做爲新的list返回。python
舉例說明,好比咱們有一個函數f(x)=x2,要把這個函數做用在一個list [1, 2, 3, 4, 5, 6, 7, 8, 9]
上,就能夠用map()
實現以下:
函數
def f(x): return x*x map(f,[1,2,3,4,5,6,7,8,9]
result:spa
[1, 4, 9, 16, 25, 36, 49, 64, 81]
reduce把一個函數做用在一個序列[x1, x2, x3...]上,這個函數必須接收兩個參數,reduce把結果繼續和序列的下一個元素作累積計算,其效果就是:code
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
【練習1】利用map()
函數,把用戶輸入的不規範的英文名字,變爲首字母大寫,其餘小寫的規範名字。輸入:['adam', 'LISA', 'barT']
,輸出:['Adam', 'Lisa', 'Bart']
。blog
答:string
def firstToUpper(x): s1 = x[:1].upper() s2 = x[1:].lower() s3 = s1 + s2 return s3
map(firstToUpper,['aleN','TOM','hello'])
解釋: x[:1]: x string 的第一個字符(從 0 開始到 1 下標可是不包含1下標); x[1:]: x string 的第二個字符一直到最後, 即從下標 1 開始到最後。。。class
結果:map
['Alen', 'Tom', 'Hello']
【練習2】Python提供的sum()
函數能夠接受一個list並求和,請編寫一個prod()
函數,能夠接受一個list並利用reduce()
求積。英文
def prod(x,y): return x+y reduce(prod,[1,2,3,4,5,6,7,8100])
結果:di
8128