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

猜你喜欢

转载自blog.csdn.net/weixin_44303465/article/details/85849148