python入門16 遞迴函式 高階函式
阿新 • • 發佈:2018-11-17
遞迴函式:函式內部呼叫自身。(要注意跳出條件,否則會死迴圈)
高階函式:函式的引數包含函式
遞迴函式
#coding:utf-8 #/usr/bin/python """ 2018-11-17 dinghanhua 遞迴函式 高階函式 """ '''遞迴函式,函式內部呼叫函式本身''' '''n!''' def f_mul(n): if type(n) != type(1) or n <= 0: #不是整數或小於0 raise Exception('引數必須是正整數') elif n == 1: return 1 else: return n * f_mul(n-1) #呼叫自身 print(f_mul(5))
''''回聲函式''' def echo(voice): if len(voice) <= 1: print(voice) else: print(voice,end = '\t') echo(voice[1:]) #呼叫自身 echo('你媽媽叫你回家吃飯')
高階函式
'''函數語言程式設計:函式的引數是函式。高階函式''' '''map() 2個引數:1個函式,1個序列。將函式作用於序列的每一項並返回list map(f,[l1,l2,l3]) = [f(l1),f(l2),f(l3)]'''
#列表每項首字母大寫 print(list(map(lambda x: x.capitalize(),['jmeter','python','selenium']))) #並行遍歷,序列合併 print(list(map(lambda x,y,z:(x,y,z),[1,2,3],['jmeter','python','selenium'],['api','dev','ui']))) #等價於 print(list(zip([1,2,3],['jmeter','python','selenium'],['api','dev','ui'])))
#3個列表各項平方之和print(list((map(lambda x,y,z:x**2+y**2+z**2,[1,2,3],[4,5,6],[7,8,9]))))
'''filter() 用函式篩選,函式需返回bool值。true保留,false丟棄 filter(f,[l1,l2,l3]) = [ if f(l1)==True: l1,...] ''' #取出列表內的偶數 li = [1,334,32,77,97,44,3,8,43] print(list(filter(lambda x:x%2==0,li))) #取出列表中去除兩邊空格後的有效資料 x and x.strip() li=[False,'','abc',None,[],{},set(),' ','x',[1,2]] print(list(filter(lambda x: x and str(x).strip(),li)))
'''自定義高階函式''' def add_square(x,y,f): return f(x)+f(y) def square(x): return x**2 print(add_square(1,2,square)) #用匿名函式 print(add_square(1,2,lambda x:x**2))
the end!