接收兩個引數,乙個是函式 乙個是序列
map()將傳入的函式依次作用到序列的每個元素,並且把結果作為新的序列返回
import random
# 對乙個序列[-1,3,-4,-5]的每乙個元素求絕對值
print
(list
(map
(abs,[
-1,3
,-4,
-5])
))# 對每個元素求階乘
deff
(x):
"""對x求階乘"""
res =
1for i in
range(1
,x+1):
res = res * i
return res
li =
[random.randint(2,
7)for i in
range(10
)]print(li)
print
(list
(map
(f,li)))
結果:[1,
3,4,
5][3
,5,7
,4,5
,3,4
,7,5
,4][
6,120,
5040,24
,120,6
,24,5040
,120,24
]
接收兩個引數,乙個是函式 乙個是序列
把乙個函式作用在乙個序列上,這個函式必須接收序列兩個引數
reduce把結果繼續和序列的下乙個元素做累積計算
reduce(f,[x1,x2,x3,x4]) =f(f(f(x1,x2),x3),x4)
另:python2中:reduce是內建函式;python3中式模組functools中的函式
from functools import
reduce
#計算1-10的累計乘積
defmulti
(x,y)
:return x * y
print
(reduce
(multi,
range(1
,10))
)#計算1-100的累計加和
defadd
(x,y)
:return x+y
print
(reduce
(add,
range(1
,101))
)顯示結果:
3628800
5050
filter()是個過濾函式和map()類似的,也接收乙個函式和乙個序列
但是和map()不同的是,filter()把傳入的函式依次作用於每個元素,然後根據返回值是true或者false決定保留還是丟棄該元素
#10以內的偶數
defisodd
(num)
:if num %2==
0:return
true
else
:return
false
print
(list
(filter
(isodd,
range(11
))))
顯示結果:[0
,2,4
,6,8
,10]
sorted()對輸入的序列進行排序
不改變原來的列表內容,生成乙個新的列表
list=[
6,7,
8,9,
1,2,
34]list2 =
sorted
(list
)print
(list
)#[6, 7, 8, 9, 1, 2, 34]
print
(list2)
#[1, 2, 6, 7, 8, 9, 34]
list2 =[6
,8,-
8,-4
,2,3
,4,7
,8]list2.sort(
)print
(list2)
#[-8, -4, 2, 3, 4, 6, 7, 8, 8]
list3 =
sorted
(list2,key=
abs)
#abs絕對值
print
(list3)
#[2, 3, -4, 4, 6, 7, -8, 8, 8]
s =[
'da'
,'ffsf'
,'fsf'
,'das'
]print
(s)#['da', 'ffsf', 'fsf', 'das']
print
(sorted
(s))
#['fsf', 'ffsf', 'da', 'das']
print
(sorted
(s,key=
str.lower)
)#['da', 'das', 'ffsf', 'fsf']
print
(sorted
(s,key=
str.upper)
)#['da', 'das', 'ffsf', 'fsf']
匿名函式的關鍵字為 lambda;以冒號:分割**,前面是形參冒號後面是返回值
lambda的主體是乙個表示式,而不是乙個**塊。僅僅能在lambda表示式中封裝有限的邏輯進去。
lambda 函式擁有自己的命名空間,且不能訪問自己引數列表之外或全域性命名空間裡的引數。
from functools import
reduce
defadd
(x,y)
:return x+y
print
(reduce
(add,
range(10
)))#45
print
(reduce
(lambda x,y:x+y,
range(10
)))#45
defmypow
(x):
return x **
2print
(list
(map
(lambda x:x**2,
range(5
))))
#[0, 1, 4, 9, 16]
defisood
(num)
:return num %2==
0print
(list
(filter
(lambda x:x%2==
0,range(10
))))
#[0, 2, 4, 6, 8]
python 內建高階函式
1.map abs i for i in 1,3,4,5 1 對於序列每個元素求絕對值 import random from functools import reduce print list map abs,1,3,4,5 2 對於序列每個元素求階乘 5 import random deffac...
python 內建高階函式
1.map map 函式接收兩個引數,乙個是函式,乙個是序列 map將傳入的函式依次作用到序列的每個元素,並且把結果 作為新的序列返回 求絕對值 print map abs,1,3,4,5 輸出 map列印的不是乙個列表而是乙個物件,所以我們需要轉換為列表才能列印。print list map ab...
Python 內建高階函式
map是python 內建的高階函式,其可以傳入倆個引數,第乙個引數是函式,第二個引數是乙個iterable例如list。def aa a return a a r map aa,1,2,3,4 map的返回值是乙個iterator需要使用list 或者for 輸出所有元素。print a for ...