python高阶函数和匿名函数
1.高階函數
把函數當成一個參數的函數
例子:
abs函數作為一個參數
def add(a,b,f):
? ?return f(a) + f(b)
print (add(10,-10,abs))
結果:
20
常用內置高階函數
1)map()函數:接收一個函數和列表,并將列表的值傳給函數,最后將結果以列表形式輸出
例子:
def power(x):
? ?return x*x
list1=[1,2,3,4,5,6,7,8,9,10]
print map(power,list1)
結果:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
2)reduce()函數:和map()類似,也是內置高階函數,但函數f需接收兩個變量;第二次調用把list中第一次處理的值(list中第1和第2個參數之和),當做第1個參數繼續,依次類推
例子:
def add(x,y):
? ?return x+y
list1=[1,2,3,4,5,6]
print reduce(add,list1)
結果:
21
3)filter()函數:類似map(),根據f函數返回的True或者False,過濾值,最后輸出列表
例子:
def is_even(x):
? ?return x%2 == 0
list1 = [1,2,3,4,5,6,7,8,9,10]
print filter(is_even,list1)
結果:
[2, 4, 6, 8, 10]
4) sorted()函數:返回一個經過排序的列表
sorted(...)
??? sorted(iterable, cmp=None, key=None,reverse=False) --> new sorted list
三個可選參數:
cmp:指定一個定制的比較函數,這個函數接收兩個參數(iterable的元素),如果第一個參數小于第二個參數,返回一個負數;如果第一個參數等于第二個參數,返回零;如果第一個參數大于第二個參數,返回一個正數。默認值為None。
key:指定接收一個參數的函數,這個函數用于從每個元素中提取一個用于比較的關鍵字。默認值為None。
reverse:是一個布爾值。如果設置為True,列表元素將被倒序排列。
例子:
mm =?dict(a=1,b=3,c=2)
print?(mm)
for?i?in?mm:
? ?print?(i)
for?j?in?mm.iteritems():
? ?print(j)
test =?sorted(mm.iteritems(),?key=lambda?x:x[1])
print(test)
結果:
{'a': 1, 'c': 2, 'b': 3}
a
c
b
('a', 1)
('c', 2)
('b', 3)
[('a', 1), ('c', 2), ('b', 3)]
說明:lambda?x:x[1] 為匿名函數
2.匿名函數
沒有名字,可以快速定義單行的最小函數
例子:
f = lambda x,y:x*y
print f(10,20)
結果:
200
轉載于:https://blog.51cto.com/huangzp/1978596
總結
以上是生活随笔為你收集整理的python高阶函数和匿名函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信公众号文章中图片加载时,占位图宽高大
- 下一篇: windows下oracle数据库自动备