1. 程式人生 > >Python基礎08 遞迴函式 內建函式

Python基礎08 遞迴函式 內建函式

遞迴函式  

如果一個函式在內部呼叫自己本身,這個函式就是遞迴函式。

在使用遞迴時,需要注意以下幾點:

(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]
'''