高階函數
允許将函數本身作為參數傳入另一個函數;允許傳回一個函數。允許傳回一個函數。
map()函數
map的第一個參數為自定義函數,第二個參數為自定義可疊代對象
例子
#定義一個函數f2求平方,使用map函數,求list1的值的平方,list1平方規則按照f2函數執行,傳回結果類型為list。
list1 = [1, 2, 3, 4, 5,]
def f2(x):
return x*x
list2 = map(f2, list1)
print type(list2)
print list2
reduce()函數
必須接收兩個參數,最多接收三個參數。
#定義一個函數f求和,使用reduce函數,求list1相加的值,再加20。list1相加規則按照f函數執行,先執行1+2,再用1+2的值與3相加,以此類推
def f(x, y):
return x+y
print reduce(f,list1,20)
filter()函數
會将可疊代對象元素傳入,如果傳回true則保留,如果傳回false則不保留元素
例子:
a = [1, 2, 3, 4, 5, 6, 7]
def f(x):
return x%2 == 1
b = list(filter(f,a))
#python3.5.1需要将filter轉換為list再進行輸出
print (b)
sorted()函數
可以針對所有的可疊代對象進行排序,傳回一個新的list
使用方法:
sorted(...)
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
cmp:有兩個參數,參數的值都是從可疊代對象中取出,此函數的規則:大于傳回1,小于傳回-1,等于傳回0
key:具體的參數就是取自于可疊代對象中,指定可疊代對象中的一個元素進行排序
reverse:判斷是否反轉,預設情況下不反轉
dic1 = {'Q':7, 'W':8, 'E':9}
print(dic1)
for key, value in dic1.items():
print(key, value)
d = sorted(dic1.items())
print(d)
匿名函數
不需要顯示定義的函數,沒有名字的函數
def f2(x,y):
等于
c = lambda x1,y1:x1+y1
print(c(4,5))
def build(x2, y2):
return lambda: x2 * x2 + y2 * y2
本文轉自 粗糧面包 51CTO部落格,原文連結:http://blog.51cto.com/culiangmianbao/1978589,如需轉載請自行聯系原作者