函数进阶

本文深入探讨了Python中的函数参数传递方式,匿名函数lambda的使用,以及map、filter、reduce、zip和enumerate等高阶函数的功能与应用。通过具体实例,讲解了如何利用这些特性提高代码效率。

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

  • 函数的参数传递
  • lambda匿名函数
  • map/filter/zip/reduce/enumerate

函数的参数传递

位置参数 -> 关键字参数 -> 可变数量参数(*args -> **args)

lambda匿名函数

  • lambda表达式可以用来声明匿名函数匿名函数,也就是没有函数名字的临时使用的小函数,尤其适合需要一个函数作为另一个函数参数的场合。也可以定义具名函数
  • lambda表达式只可以包含一个表达式,该表达式的计算结果可以看作是函数的返回值,不允许包含复合语句,但在表达式中可以调用其他函数。
  • 使用lambda保留字定义,函数名是返回结果
  • lambda函数用于定义简单的、能够在一行内表示的函数
<函数名> = lambda <参数>: <表达式>

等价于

def <函数名>(<参数>)
	  <函数体>
	  return <返回值>

谨慎使用lambda函数

lambda函数主要作用一些特定函数或方法的参数,一般情况,建议使用def定义的普通函数

>>>sorted(['abc','afe','abc'], key=lambda x:(x[0],x[2]))
['acb','abc','afe']

#这段的意思是,选取每一个字符串的第0个和第2个字符,依次比较进行排序

map/filter/reduce/zip/enumerate

range(start, stop[ ,step])
 计数从start开始。默认是从0开始。例如range(5)等价于range(0,5)
 技术到stop结束,但不包括stop。例如:range(0,5)是[0,1,2,3,4]没有5
 步长,默认为1。例如(0,5)等价于range(0,5,1)

map函数

描述:map()会根据提供的函数对指定序列做映射。第一个参数function以参数序列中的每一个元素调用function函数,返回包含每次function函数返回值的新列表
注:Python 2.x 返回列表
  Python 3.x 返回迭代器

map(function, iterable,...)
#function--函数
#iterable--一个或多个序列

filter函数

描述:filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。该函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回True或False,最后将返回True的元素放到新列表中
注:Python 2.x 返回列表
  Python 3.x 返回迭代器

filter(fuction,iterable)
#function--判断函数,只能接收一个参数,且返回值是True或False
#iterable--可迭代对象

内置函数filter()将一个单参数函数作用到一个序列上,返回该序列中使得该函数返回值为True的那些元素组成的filter对象,如果指定函数为None,则返回序列中等价于True的元素。例如:

zip函数

描述:zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用*号操作符,可以将元组解压为列表。
注:zip方法在Python 2 和Python 3 中的不同:在Python 3.x中为了减少内存,zip() 返回的是一个对象。如需展示里列表,需手动list()转换。

zip([iterable,...]
#literable--一个或多个迭代器
返回元组列表

enumerate函数

描述:enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中。
Python 2.3. 以上版本可用,2.6 添加start参数

enumerate(sequence, [start=0])
#sequence--一个序列、迭代器或其他支持迭代对象
#start--下标起始位置
返回enumerate(枚举)对象
这一段的意思是:x字符串中的内容除最后一个‘d’按照顺序依次遍历,如果这一个元素和下一个元素一样,则返回

reduce函数

注:在Python3中,reduce函数放置在functools模块中,如果想使用它,则需要通过引入functools模块来调用reduce()函数:

from functools import reduce

描述:reduce()函数会对 参数序列中元素进行累积。函数将一个数据集合(列表,元组等)中的所有数据进行下列操作:用传给reduce中的函数function(有两个参数)先对集合中的第1,、2个元素进行操作,得到的结果再与第三个数据用function函数运算,最后得到一个结果。

reduce(function, iterable[, initializer])
#function--函数,有两个参数
#iterable--可迭代对象
#initializer--可选,初始参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值