高階函式
變數可以指向函式,函式的引數可以接收變數,那麼函式可以接收另乙個函式作為引數,這種函式稱為高階函式
接收兩個引數,乙個是函式 乙個是序列
map將傳入的函式依次作用到序列的每個元素,並且把結果作為新的序列返回
需求:對於乙個序列[-1,3,-4,-5]的每乙個元素求絕對值
print(list(map(abs,[-1,3,-4,-5])))
[1, 3, 4, 5]
需求:對於每個元素求階乘
import random
def jiecheng(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(jiecheng,li)))
把乙個函式作用在乙個序列上,這個函式必須接收兩個引數
reduce把結果繼續和序列的下乙個元素做累積計算
reduce(f,[x1,x2,x3,x4]) = f(f(f(x1,x2),x3),x4)
注意:python2中:reduce是內建函式
python3中 from functools import reduce
from functools import reduce
#import functools
#functools.reduce()
def multi(x,y):
return x*y
print(reduce(multi,range(1,5)))
24def add(x,y):
return x+y
print(reduce(add,range(1,6)))
15
需求:將乙個字串轉換成整型
from functools import reduce
def str2int(s):
def char2int(ch):
c =
return c[ch]
def fun(n1, n2):
return n1 * 10 + n2
return reduce(fun, map(char2int, s))
num = str2int('12345')
print(type(num), num)
和map()類似,也接收乙個函式和乙個序列
但是和map()不同的是,filter()把傳入的函式依次作用於
每個元素,然後根據返回值是true或者false決定保留還是丟棄該元素
def isodd(num):
if num % 2 == 0:
return true
else:
return false
print(list(filter(isodd,range(100))))
與列表內建方法不同的是sorted()不改變原有的內容,而是生成乙個新的列表
list = [1,-5,6,-7,9,10,3,4,-8]
list.sort()
print(list)
list2 = sorted(list,key=abs)
print(list2)
s = ['dfs','fds','tda','eds']
print(s)
print(sorted(s))
print(sorted(s,key=str.lower))
print(sorted(s,key=str.upper,reverse=true))
[-8, -7, -5, 1, 3, 4, 6, 9, 10]
[1, 3, 4, -5, 6, -7, -8, 9, 10]
['dfs', 'fds', 'tda', 'eds']
['eds', 'fds', 'dfs', 'tda']
['dfs', 'eds', 'fds', 'tda']
['tda', 'fds', 'eds', 'dfs']
info = [
# 商品名稱 商品數量 商品**
]# 按照商品數量進行排序
def sorted_by_count(x):
return x[1]
# 按照商品**進行排序
def sorted_by_price(x):
return x[2]
# 先按照商品數量進行小-大的排序,如果商品數量一樣
# 則按照商品**由小-大進行排序
def sorted_by_count_price(x):
return x[1],x[2]
print(sorted(info,key=sorted_by_count))
print(sorted(info,key=sorted_by_price))
print(sorted(info,key=sorted_by_count_price))
Python之常用內建高階函式
map函式 用於接收乙個函式及多個迭代物件,會根據提供的函式對指定序列做對映,然後返回乙個新的map物件 例1 需要乙個引數 a map lambda x x x,1,2 3 print a 輸出結果 map object at 0x00fa73d0 此時a指向於map出的新物件,可以使用list ...
Python常用高階函式
高階函式是在python中乙個非常有用的功能函式,所謂高階函式就是乙個函式可以用來接收另乙個函式作為引數,這樣的函式叫做高階函式。為了便於理解,我們從實際例子來看看函式當做引數被傳遞到另個函式是什麼樣的。我們把abs 函式賦值給了f變數,接下來你就可以像使用abs 函式本身那樣使用f變數了,區別只是...
python之函式高階
概念預設引數是指函式或者方法在定義時為形參賦值,對應的形參為預設引數。預設引數是乙個引數定義時的概念,與呼叫無關 作用如果引數定義了預設引數,在呼叫方法或函式時,如果衛隊該引數進行傳值,則使用預設值作為該引數的值。語法 定義 def 函式名 形參1 值1,函式體.呼叫 函式名 實參 格式一 傳入實參...