python函数强化

递归函数

递归是一种编程思想

如果要遍历一个文件夹下面所有的文件,通常会使用递归来实现

递归的特点

函数内部自己调用自己

必须有出口

def sum_numbers(num):
    #如果是1,直接返回1 -- 出口
    if num == 1:
        return 1
    #如果不是1,重复执行累加并返回结果
    return num + sum_numbers(num-1)

sum_result = sum_numbers(3)
#输出结果为6
print(sum_result)

注意:如果没有出口,会报错造成超出最大递归深度

匿名函数

lambda表达式

lambda 参数列表:表达式

注意:

lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用

lambda表达式能接收任何数量的参数但只能返回一个表达式的值

lambda的应用场景

如果一个函数有一个返回值并且只有一句代码,可以使用lambda简化。

def add(a,b):
    return a + b

result = add(1,2)
print(result)

#fn1 lambda a,b:a + b
#print(fn1(1,2))

lambda的参数形式

无参数

fn1 = lambda:100

print(fn1())

一个参数

fn1 = lambda a:a

print(fn1('hello world'))

默认参数

fn1 = lambda a,b,c=100: a + b + c

print(fn1(10,20))

可变参数:*args

fn1 = lambda *args:args

print(fn1(10,20,30))

注意:返回值为元组

可变参数:**kwargs

fn1 = lambda **kwargs:kwargs

print(fn1(name = 'python',age=20))

列表数据按字典key的值排序

students = [
{'name':'Tom','age':21},
{'name':'Rose','age':22},
{'name':'Jack','age':20}
]

#按name值升序排列
students.sort(lambda x:x['name'])
#按name值降序排列
students.sort(lambda x:x['name'],reverse = True)
print('students')

高阶函数

abs()

可以完成对数字求绝对值计算

round()

可以完成对数字的四舍五入计算

def sum_num(a,b,f):
    return f(a) + f(b)

result = sum_num(-1,2,abs)
print(result)

map()

map(func,lst),将传入的函数变量func作用到st变量的每个元素中,并将结果组成新的列表(pyhton2)/(python3)返回

list = [1,2,3,4,5]

def func(x):
    return x ** 2

result = map(func,list)
print(list(result))

reduce()

reduce(func,lst),其中func必须有两个参数。每次func计算的结果继续和序列的下个元素做累计计算。

注意:reduce()传入的参数func必须接收2个参数

import functools
list = [1,2,3,4,5]

def func(a,b):
    return a + b

result = functools.reduce(func,list)
print(result) #15

filter()

filter(func,lst)函数用于过滤序列,过滤掉不符合条件的元素,返回一个filter对象。如果要转换为列表,可以使用list()来转换

list = [1,2,3,4,5]

def func(x):
    return x % 2 == 0

result = filter(func,list)
print(list(result)) #[2,4]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值