1.map()函式
map()函式接收兩個引數,乙個是函式,乙個是iterable,map將傳入的函式依次作用到序列的每個元素,並把結果作為新的iterator返回。
def f(x):
return x*x
r = map(f, [1,2,3,4,5])
list(r)
2.reduce()函式out:
[1, 4, 9, 16, 25]
如果要把序列[1, 2, 3, 4, 5, 6]變換成整數123456,reduce就可以派上用場:
from functools import reduce
def fn(x, y):
return x*10+y
reduce(fn, [1,2,3,4,5,6])
作業1out:
123456
利用map()函式,把使用者輸入的不規範的英文名字,變為首字母大寫,其他小寫的規範名字。輸入:[『adam』, 『lisa』, 『bart』],輸出:[『adam』, 『lisa』, 『bart』]:
l1 = ['adam', 'lisa', 'bart']
def normalize(name):
name = name[0].upper() + name[1:].lower()
return name
l2 = list(map(normalize , l1))
l2
作業2out:
['adam', 'lisa', 'bart']
python提供的sum()函式可以接受乙個list並求和,請編寫乙個prod()函式,可以接受乙個list並利用reduce()求積:
from functools import reduce
l = [1,2,3,4,5,6,7,8,9]
def sum(x,y):
return x+y
sum = reduce(sum, l)
sum
作業3:out:
45
利用map和reduce編寫乙個str2float函式,把字串』123.456』轉換成浮點數123.456:
from functools import reduce
def str2float(s):
def fn(x, y):
return x * 10 + y
def char2num(s):
return [s]
return reduce(fn, map(char2num, s.replace(".","")))
s="1234.567"
if s.find(".")!=-1:
print('str2float(\'%s\') ='%s, str2float(s)/pow(10,(len(s)-s.find(".")-1)))
else:
print('str2float(\'%s\') ='%s, str2float(s))
out:
str2float('1234.567') = 1234.567
廖雪峰Python教程之filter
filter 過濾器 python內建的filter 函式用於過濾序列。和map 類似,filter 也接收乙個函式和乙個序列。和map 不同的是,filter 把傳入的函式依次作用於每個元素,然後根據返回值是true還是false決定保留還是丟棄該元素。回數是指從左向右讀和從右向左讀都是一樣的數,...
廖雪峰Python教程之sorted
sorted 排序函式 sorted 也是乙個高階函式。用sorted 排序的關鍵在於實現乙個對映函式。作業1 假設我們用一組tuple表示學生名字和成績 l bob 75 adam 92 bart 66 lisa 88 方法1 l bob 75 adam 92 bart 66 lisa 88 de...
廖雪峰python教程 Python簡介
python是著名的 龜叔 guido van rossum在1989年聖誕節期間,為了打發無聊的聖誕節而編寫的乙個程式語言。現在,全世界差不多有600多種程式語言,但流行的程式語言也就那麼20來種。如果你聽說過tiobe排行榜,你就能知道程式語言的大致流行程度。這是最近10年最常用的10種程式語言...