python函数进阶(lambda/range/map/reduce/filter/zip/enumerate)

本文深入探讨了Python中的lambda匿名函数及其与其他高级函数如range、map、filter、reduce、zip和enumerate的使用。lambda函数简化代码,提高编程效率。同时,文章介绍了range生成可迭代对象,map应用函数于序列,filter筛选条件,reduce对序列进行累积计算,zip打包迭代器元素,以及enumerate提供元素值和索引的便捷访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要讲的是稍微高级一点的函数,这些函数往往能使代码更简洁,提高编程效率。

 

一:lambda匿名函数

为什么说是匿名函数呢?

因为python中声明函数的方式只有def和lambda两种,lambda函数实际上是一个表达式,而不是一个语句;其主体是一个单独的表达式而不是一个代码块:

                  lambda arguement1, argumnet2, argument3, ……, argument N: expression using arguments

被认为是没有函数名的,但是可以通过赋值,将表达式赋值给一个变量名,之后通过这个变量名调用函数,调用方式和def的代码一样遵循相同规则。

f = lambda x, y, z = x + y + z
f(2,3,4)
9

也许一看到lambda你会联想到数学里的lambda(我数学不好), 但是这里的确实比数学里的东西好理解?‍。也许你会问为什么要用lambda, 这是因为使用lambda确实能精简代码,这符合python之禅;但是也不能让代码太过晦涩难懂,适度使用这些技术也是很有用处的。

二:range、map、filter、reduce、zip、enumerate函数

放在一起是因为python3中他们返回的都是迭代器对象或者是可迭代对象或是处理迭代器对象,需要使用list()之类的函数转换成你想要的类型:

1.range()

 range(stop) 
 range(start, stop[, step]) 

返回的是可迭代对象,通常和for循环一起用,记住留头去尾;支持.conut和.index

可以通过list函数转换为列表形式;

2.map()

格式:

map(function, *iterables)

十分像列表推导式,但要记住map()函数返回的是迭代器对象

map支持很多函数,这就使得你使用map变得十分方便高效

3.reduce()

 reduce(function, sequence[, initial])

会将函数作用于序列的每一个元素上,然后返回值

reduce函数接受迭代器对象并进行处理,但是它本身不是一个可迭代对象。

并且在python3中reduce并不在内置函数中,而是在functools中,需要导入。

reduce还支持将一个可选的第三个参数放置在序列各项之前,进而当序列为空时返回充当的默认结果,有点基本工资的意思:

reduce(lambda x,y:x+y,[1,2,3],6)
12

对整个序列进行运算:1+2+3+6 = 12

4.filter()

filter 筛选的意思,函数也是筛选符合条件的可迭代对象元素。返回的仍是迭代器对象

5.zip()

zip(iter 1[, iter 2[ ...]])

将可迭代对象作为参数,将对象中对应的元素打包成元组,然后返回由这些元组组成的对象,可使用*解压

6.enumerate()

enumerate(iterable, start=0)

默认返回迭代对象;

得到对应元素值和索引;

Have a good  one!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值