python 內建高階函式

2021-09-02 23:38:01 字數 2853 閱讀 1683

1.map

map()函式接收兩個引數,乙個是函式,乙個是序列

map將傳入的函式依次作用到序列的每個元素,並且把結果

作為新的序列返回

#求絕對值:

print((map(abs,[-1,3,-4,-5])))

輸出:、

map列印的不是乙個列表而是乙個物件,所以我們需要轉換為列表才能列印。

print(list(map(abs,[-1,3,-4,-5])))

輸出:[1, 3, 4, 5]

# 需求:使用者接收一串數字;講該字串中的所有數字轉化為整型

# 並以列**式輸出

num = input('')

def isint(num):

return int(float(num))

print(list(map(isint,num.split(' '))))

# 對於序列的每個元素求階乘

def factoria(x):

"""對與x求階乘"""

res = 1

for i in range(1,x+1):

res = res * i

return res

li = [random.randint(2,7) for i in range(10)]

print(list(map(factoria,li)))

輸出:[24, 5040, 2, 2, 24, 120, 2, 24, 720, 5040]

2.reduce

reduce:把乙個函式作用在乙個序列上,這個函式必須接收兩個引數

reduce把結果繼續和序列的下乙個元素做累積計算

reduce(f,[x1,x2,x3,x4]) = f(f(f(x1,x2),x3),x4)

例1:3的階乘

from functools import reduce

"""python2:reduce為內建函式

python3:from functools import reduce,這裡我用的python3

"""def multi(x,y):

return x*y

print(reduce(multi,range(1,4)))

輸出: 6

例2:求1-5的和

def add(x,y):

return x+y

print(reduce(add,[1,2,3,4,5]))

輸出:15

3.filter 過濾函式

和map()類似,filter()也接收乙個函式和乙個序列

但是和map()不同的是,filter()把傳入的函式依次作用於每個元素,

然後根據返回值是true還是false決定保留還是丟棄該元素.

例1:100以內的偶數

#只能乙個形參,函式的返回值只能是true或者false

def isodd(num):

if num %2==0:

return true

else:

return false

print(list(filter(isodd,range(100))))

4.sorted

.sort()與sorted()的區別:

li = [1,2,4,6,3]

li.sort() # sort在原有列表中排序

print(li)

a = sorted(li)  # sorted是給新生成變數排序

print(a)

#預設sort和sorted方法由小到大進行排序,reverse=true 由大到小進行排序

a = sorted(li,reverse=true)

print(a)

這裡sorted()是乙個高階函式,我們來了解一下他的用法:

info = [

# 商品名稱 商品數量 商品**

]#預設按照商品數量進行排序

print(sorted(info))

輸出:

怎麼樣按照商品數量和商品**排序呢?

1.商品數量

info = [

# 商品名稱 商品數量 商品**

]def sorted_by_count(x):

return x[1]

print(sorted(info,key=sorted_by_count)) # key代表排序的關鍵字

輸出:

2.商品**

info = [

# 商品名稱 商品數量 商品**

]# 按照商品**進行排序

def sorted_by_price(x):

return x[2]

print(sorted(info,key=sorted_by_price)) # key代表排序的關鍵字

輸出:

如果商品數量一致時候怎麼辦?如果商品數量一致,則按照商品**由小到大進行排序。

#先按照商品數量由小到大進行排序,如果商品數量一致,

#則按照商品**由小到大進行排序

def sorted_by_count_price(x):

return x[1], x[2]

print(sorted(info, key=sorted_by_count_price)) # key代表排序的關鍵字

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 內建高階函式

map是python 內建的高階函式,其可以傳入倆個引數,第乙個引數是函式,第二個引數是乙個iterable例如list。def aa a return a a r map aa,1,2,3,4 map的返回值是乙個iterator需要使用list 或者for 輸出所有元素。print a for ...

python(內建高階函式)

1.高階函式介紹 2.內建高階函式 1 map function,iterable 函式 將列表 a 中的元素全部轉換成字串 a 1,2,3,4 b map str,a print list b 將下面stu列表中的姓氏進行首字母大寫操作 stu zhao qian sun li 自定義首字母大寫方...