Python基礎08 遞迴函式 內建函式
阿新 • • 發佈:2019-01-06
遞迴函式
如果一個函式在內部呼叫自己本身,這個函式就是遞迴函式。
在使用遞迴時,需要注意以下幾點:
(1)自己呼叫自己
(2)必須有一個明確的遞迴結束條件,稱為遞迴出口。
練習1:使用遞迴函式向控制檯列印3,2,1
def print_num(num):
print(num)
if num == 1
return
print_num(num-1)
print('--->')
print_num(3)
'''
3
2
1
--->>
--->>
'''
練習2:計算1到10的階乘:例如1*2*3*4*5...*10 def func(n): if n == 1 return return n*func(n-1) num = func(10) print(num) 3628800
練習3:查詢數字:通過程式查詢輸入的number值
def search(number,start,end):
if number == start:
return start
else:
middle = (start+end)//2
if number <= number
return search(number,middle,end)
else:
return search(number,start,middle)
ret = search(2,1,10)
print(ret)
內建函式
1 abs()函式 求數字的絕對值
ret = abs(-21)
print(ret) 21
2 max()函式 求最大值
max(iterable, key, default) 求迭代器的最大值,
其中iterable 為迭代器,max會for i in … 遍歷一遍這個迭代器,
然後將迭代器的每一個返回值當做引數傳給key=func 中的func(一般用lambda表示式定義) ,然後將func的執行結果傳給key,然後以key為標準進行大小的判斷。
1,簡單使用max()函式 ret = max(1,2,3) print(ret) 3
2 ,使用key關鍵字
key = 函式名稱 ,--->指定求最大值的規則
ret = max(1,2,-3,key=abs)
print(ret) # -3
3,根據name和price返回自大的資訊
lst =
[{'name': 'egon', 'price': 100},
{'name': 'rdw', 'price': 666},
{'name': 'zat', 'price': 1}]
根據name值進行比較,返回商品資訊
根據priced的值進行比較 返回商品資訊
def max_name(dic):
return dic['name']
den max_price(dic):
return dic['price']
ret = max(lst,key = max_name)
ret2 = max(lst,key =max_price )
print(ret)
print(ret2)
'''
{'price': 1, 'name': 'zat'}
{'price': 666, 'name': 'rdw'}
'''
3 map() 函式
有兩個引數,第一個引數是一個函式,第二個引數是可迭代內容
函式會依次作用在可迭代內容的每一個元素上進行計算,然後返回一個新的可迭代內容
練習 1 lst中的每一個元素的平方值
lst = [1,3,5]
def square(num):
num2 = num *num
return num2
ret = map(square,lst)
print(ret)
for i in ret:
print(i)
ret1 = list(map(square,lst))
print(ret1)
1
9
25
[1, 9, 25]
4filter()函式
filter()用於過濾序列,過濾掉不符合條件的元素,返回符合條件元素組成的新列表。
該接收兩個引數,第一個為函式,第二個為序列,序列的每個元素作為引數傳遞給函式進行判斷
然後返回True 或False ,最後將返回True的元素放到新列表中。
練習1 過濾出列表中的所有奇數
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
def odd(num):
if num % 2 == 1:
return num
ret = filter(odd,lst)
print(list(ret))
for i in ret:
print(i)
'''
[1, 3, 5, 7, 9]
'''