day13实参高阶函数

一、匿名函数

没有名字的函数

1.匿名函数的语法

1)lambda 形参列表:返回值

2)函数名 = lambda 形参列表:返回值

2.匿名函数的应用

给实参高阶函数传参

二、实参高阶函数

如果一个函数有一个参数就函数,那么这个函数就是实参高阶函数

函数对应的传参方式:1.传普通函数的函数名 2.传匿名函数

函数对应的要求:1. x是函数 2.这个函数可以接收参数 3. 这个函数的返回值必须是数字

常用的几个实参高阶函数

1. max

max(序列) - 求序列中最大元素(直接比较每个元素本身的大小)

max(序列,key = 函数) - 按照函数指定的规则比较序列中元素本身的大小的最大值

函数要求:a.有且只有一个参数:这个参数会指向序列中的每个元素
b.需要一个返回值:返回值就是比较对象(将参数看成序列中的元素,在返回值这个位置来描述比较的对象)

nums = [23,18,28,29,36,45]
print(max(nums,key=lambda nums:(int(nums)%10)+(int(nums) // 10)))#29
print(min(nums,key=lambda nums:nums**2))#18

2. map

map(函数,序列)

函数要求:a.有且只有一个参数,参数指向后面序列中的元素
b.有一个返回值,返回值就是新序列中的元素
map(函数,序列1,序列2…序列N.)
函数要求:a.有且只有N个参数
b.有一个返回值,返回值就是新序列中的元素
如果有多个序列,要求每个序列中的元素相等

nums = [19, 67, 28, 100, 23]
lists = map(lambda nums:nums%10+nums//10,nums)
print(list(lists))#[10, 13, 10, 10, 5]

3. reduce

reduce(函数,序列,初始值)

初始值 - 根据合并方式,初始值一般是0(数字求和)、1(数值求乘积)、空串’'(字符串拼接)
函数:a.有且只有两个参数,第一个参数指向初始值。第二个参数指向序列中的额每个元素
b.有一个返回值。用来描述合并方式

nums = [100, 200, 100, 300, 400]
rasult = reduce(lambda x,item:x*item,nums,1)
print(rasult)#240000000000

三、迭代器和生成器

1.迭代器(iter)

1)迭代器是容器

特点:a.打印迭代器看不到元素

​ b.无法统计元素个数

​ c.获取元素的时候只能从前往后按顺序一个一个的取,并且取出一个迭代器内就少一个(不支持增删改)

2)创建迭代器

a.通过类型转换将其他容器转换成迭代器

b.创建一个生成器

3)获取元素

a.获取单个元素:next(迭代器)

b.遍历

注:无论以任何方式得到了迭代器的元素,被得到的元素一定会从迭代器中消失

2.生成器

生成器是容器

生成器作为容器保存的不是多个数据,而且产生多个数据的算法

a.创建生成器 - 调用带有yield关键字的函数,就可以得到生成器

b.控制生成器中元素的个数 - 生成器能创建多少个数据以及能创建哪些数据,就看执行生成器对应的函数的函数体时,会遇到几次yield,每次遇到yield的时候对应的值是多少

c.获取生成器中的元素和迭代器一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值