python学习笔记----高阶函数

高阶函数

-实参是一个函数名

-函数的返回值是一个函数

求和函数

绝对值函数

把函数赋值给变量

传递的参数包括函数名

内置高阶函数

1.map函数

map()函数接收两个参数,一个是函数,一个是序列
map将传入的函数依次作用到序列的每个元素,并把结果作为新的序列返回

实例1:

对于序列[-1,3,-5,-4]的每个元素求绝对值

print(list(map(abs,[-1,3,-5,-4])))

 

实例2:

对于序列的每个元素求阶乘(10个元素,都在2~7之间的随机数)

import random
def je(x):
    res =1
    for i in range(1,x+1):
        res*=i
    return res
li = [random.randint(2,7)for i in range(10)]
print(li)
print(list(map(je,li)))

 

实例3:

用户接收一串数字,‘1 3 5 7 8’,将字符串中所有的数字转化为整型
并且以列表的格式输出

s = '1 3 5 7 8'
print(list(map(int,s.split())))

 

实例4:

2.reduce函数

把一个函数作用在一个序列上,这个函数必须接收两个参数
reduce把结果继续和序列的下一个元素做累积计算    reduce(f,[x1,x2,x3,x4,x5] = f(f(f(x1,x2),x3),x4)

3.filter过滤函数

和map()类似,也接收一个函数和一个序列
但fileter()把传入的函数依次作用于每个元素,然后根据返回值
是True还是False来决定保留还是丢弃该元素

 过滤出1~100以内的所有偶数

过滤出1~10以内的所有质数

4.sorted函数(排序)

.参数一:必须可迭代对象,[用于比较的序列]
参数二:用于比较函数的时候,比较什么由key来决定[key有默认值]
参数三:reverse = True[降序], reverse = False[升序,默认升序]返回值,返回的一个可迭代对象

实例:

 

实例:

# (2018-携程-春招题)题目需求:
给定一个整形数组, 将数组中所有的0移动到末尾, 非0项保持不变;
在原始数组上进行移动操作, 勿创建新的数组;
# 输入:
    第一行是数组长度, 后续每一行是数组的一条记录;
    4
    0
    7
    0
    2
# 输出:
    调整后数组的内容;
    4
    7
    2
    0
    0

匿名函数:

1.关键字lambda表示匿名函数,冒号前面表示函数的参数。

2.匿名函数只能有一个表达式,表达式结果就是函数返回值,不用写return。

3.匿名函数也是一个也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数。同样的,也可以把匿名函数作为返回值返回。

4,相对来说,python多匿名函数的支持有限,只支持一些简单的函数。
例一:

lambda *args,**kwargs:(args,kwargs)

例二:
找出1~100之间的偶数

print(list(filter(lambda x:x%2 == 0,range(1,101))))

例三:求5以内数的平方

print(list(map(lambda x:x**2,range(5))))

例四:
移动列表中的0到最后面,其他数字排序不变
nums = [0, 7, 0, 1, 2, 1, 5,1, 7, 8, 0, 67, 1, 3, 4]

nums = [0, 7, 0, 1, 2, 1, 5,1,  7, 8, 0, 67, 1, 3, 4]
print(sorted(nums,key=lambda x:1 if x == 0 else 0))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值