Python之高阶函数(abs、map、reduce、filter、lambda匿名函数)

  • 什么是内置高阶函数

高阶函数:一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返回值为该函数本身,则为递归),满足其一则为高阶函数。

  • abs函数

abs() 函数返回数字的绝对值。

示例:

>>> a = -16
>>> print(abs(a))
16
>>> print(abs(-5))
5
>>> f = abs
>>> print(f(-10))
10

函数本身也可以赋值给变量,变量可以指向函数:

[kiosk@foundation13 ~]$ vim test.py
[kiosk@foundation13 ~]$ cat test.py
def fun(x,y,f):return f(x),f(y)
print(fun(-10,34,abs))
[kiosk@foundation13 ~]$ /usr/local/python3/bin/python3 test.py
(10, 34)
  • map函数

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

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

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

2.对于每个元素求阶乘

[kiosk@foundation13 ~]$ vim test1.py
[kiosk@foundation13 ~]$ cat test1.py
import random
def factoria(x):res = 1for i in range(1,x+1):res = res  * ireturn res
li = [random.randint(2,7) for i in range(10)]
print(list(map(factoria,li)))
[kiosk@foundation13 ~]$ /usr/local/python3/bin/python3 test1.py
[2, 24, 24, 120, 5040, 720, 720, 2, 720, 24]
[kiosk@foundation13 ~]$ /usr/local/python3/bin/python3 test1.py
[720, 720, 5040, 720, 5040, 5040, 24, 120, 24, 120]
[kiosk@foundation13 ~]$ /usr/local/python3/bin/python3 test1.py
[5040, 720, 120, 2, 24, 5040, 720, 2, 6, 24]
  • reduce函数

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

python2中:reduce是内置函数
python3中 from functools import reduce

示例:

[kiosk@foundation13 ~]$ vim test2.py
[kiosk@foundation13 ~]$ cat test2.py
from functools import reduce
def multi(x,y):return x*y
print(reduce(multi,range(1,5)))def add(x,y):return x+y
print(reduce(add,range(1,6)))
[kiosk@foundation13 ~]$ /usr/local/python3/bin/python3 test2.py
24
15
  • filter函数

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

示例:
0~100之间的偶数:

[kiosk@foundation13 ~]$ vim test3.py
[kiosk@foundation13 ~]$ cat test3.py
def isodd(num):if num % 2  == 0:return Trueelse:return Falseprint(list(filter(isodd,range(100))))
[kiosk@foundation13 ~]$ /usr/local/python3/bin/python3 test3.py
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98]

l

  • lambda匿名函数

lambda()匿名函数是指一类无需定义标识符(函数名)的函数或子程序。
lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。
匿名函数的关键字为 lambda。
冒号前面是形参,冒号后面是返回值。

示例:
分别打印元素的累加、平方、范围内的所有偶数:

[kiosk@foundation13 ~]$ vim test4.py
[kiosk@foundation13 ~]$ cat test4.py
from functools import reduce
# def add(x,y):
#     return x+y
# print(reduce(add,range(10)))
#累加
print(reduce(lambda x,y:x+y,range(10)))
#每个元素的平方
print(list(map(lambda x:x**2,range(5))))
#偶数
print(list(filter(lambda x:x%2==0,range(10))))
[kiosk@foundation13 ~]$ /usr/local/python3/bin/python3 test4.py
45
[0, 1, 4, 9, 16]
[0, 2, 4, 6, 8]
  • 高阶函数的综合练习

1.将一个字符串转换成整型 ‘332.31321’

from functools import reducedef str2int(s):def char2int(ch):c = {str(x): x for x in range(10)}return c[ch]def fun(n1, n2):return n1 * 10 + n2return reduce(fun, map(char2int, s))num = str2int('12345')
print(type(num), num)

2.利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字

def zz(x):return x.capitalize()
name = input('请输入英文名字:')
print(list(map(zz, name.split())))

3.利用map和reduce编写一个str2float函数,把字符串’123.456’转换成浮点数123.456

from functools import reduce
def str2float(s):s1 = s.split('.')[0]s2 = s.split('.')[1][::-1]c2n = {str(i):i for i in range(1,10)}def number(x):return c2n[x]def before_c2n(x,y):return x*10+ydef after_c2n(x,y):return x*0.1+yreturn reduce(before_c2n,map(number,s1)) + 0.1*reduce(after_c2n,(map(number,s2)))
print(str2float('345.678'))

4.回数是指从左向右读和从右向左读都是一样的数,例如12321,909。请利用filter()筛选出回数

def huishu(s):s = str(s)return s == s[::-1]
li = [123,23432,121,4567,12421]
print(list(filter(huishu,li)))

END

Python之高阶函数(abs、map、reduce、filter、lambda匿名函数)相关推荐

  1. Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊...

    函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...

  2. Swift-高阶函数如map,reduce,filter的一些总结

    Swift 这个语言,速度快,更加安全,代码少,易于阅读维护. 所以一些高阶函数在项目实际使用中也是蛮方便的总结如下: 高阶函数的定义:一个函数如果可以以某个函数作为参数,或者返回值,那么这个函数就称 ...

  3. python3高阶函数:map(),reduce(),filter()的区别

    转载请注明出处:https://www.cnblogs.com/shapeL/p/9057152.html 1.map():遍历序列,对序列中每个元素进行操作,最终获取新的序列 1 print(lis ...

  4. Python学习日记(3)Python内建函数map()、filter()和匿名函数表达式

    内建函数map() 这个函数接收一个函数和一个可迭代对象作为参数,并以某种方式应用这个函数. old_list = [11,22,33] old_str = "test"new_l ...

  5. python lambda函数_python入门基础之lambda匿名函数

    lambda的一般形式是关键字lambda后面跟一个或多个参数,紧跟一个冒号,以后是一个表达式.lambda是一个表达式而不是一个语句.它能够出现在Python语法不允许def出现的地方.作为表达式, ...

  6. python中sorted函数的用法_Python中map,reduce,filter和sorted函数的使用方法

    map map(funcname, list) python的map 函数使得函数能直接以list的每个元素作为参数传递到funcname中, 并返回响应的新的list 如下: def sq(x): ...

  7. python 匹配字符串map lambda函数_Python map amp; reduce 以及lambda匿名函数 - jvisualvm - ITeye博客...

    map() map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回. 使用map实现一个f(x) = x * ...

  8. python高阶函数、map reduce 自己如何去定义_小猿圈python之高阶函数lambda、map和reduce用法...

    python有很多内置函数,内置函数封装了很多功能,让我们用起来很方便,小猿圈针对高阶函数有详细的讲解视频,朋友们可以去看看,小编学后总结了一下,下面说一下lambda.map和reduce高阶函数的 ...

  9. py函数式编程(高阶函数map/reduce/filter/sorted、闭包函数/返回函数、匿名函数lamber、@装饰器decorator、偏函数functool.partial())

    #py函数式编程.py #高阶函数map/reduce/filter/sorted.闭包函数/返回函数.匿名函数lamber.@装饰器decorator.偏函数functool.partial()# ...

  10. C++11 lambda匿名函数看这一篇足以

    文章目录 1.lambda匿名函数的定义 2.lambda匿名函数中的[外部变量] lambda 源自希腊字母表中第 11 位的 λ,在计算机科学领域,它则是被用来表示一种匿名函数.所谓匿名函数,简单 ...

最新文章

  1. 非修改md5视频去重消重软件视频去重视频消重怎么弄
  2. java8 求和_java8求和
  3. C#_动态获取鼠标位置的颜色
  4. lia人是什么意思_狗狗喜欢舔人到底什么意思?毛孩的心思主人你要懂
  5. 设计模式之适配器模式(Adapter Pattern)
  6. python制作考试系统_Python系统学习 - Pytest单元测试框架
  7. php+api抖音随机播放视频源码
  8. div中内部div横向布局
  9. python中对象的概念是什么_python面向对象编程的基本概念
  10. Mac故障 重置PRAM或NVRAM(何时重置,如何重置)
  11. 2022年PC推荐-组装机及品牌机 2022年8月16日(持续更新)
  12. Spring系列:2021年Java春招面试经历,内容太过真实
  13. 2021年安全生产模拟考试(建筑特种作业操作证-建筑焊工模拟考试题库)安考星
  14. 查询oracle原始表d,oracle 多表查询
  15. 将您重定向的次数过多什么意思_【linux二三轶事】重定向是啥?文件描述符是啥?...
  16. java.lang.IllegalArgumentException介绍
  17. 已知旋转中心和旋转角度,获得旋转之后的一组点坐标
  18. raid卷构建实操(raid0、raid1、raid5、raid6以及raid10),可跟做
  19. char c1,c2;与int c1,c2是否无条件地等价.cpp
  20. 黑猫详解【UFS HCI】第1篇:UFSHCI系统框架介绍

热门文章

  1. 百度地图之 添加遮罩层 去除百度地图logo
  2. 幂等性问题和解决方法
  3. Iphone IPA软件制作教程
  4. AcWing 217. 绿豆蛙的归宿(期望dp)
  5. Unity 实现圆圈调节
  6. Tita :OKR落地推行的具体方法
  7. 零基础教会你用github创建个人博客网站
  8. Win7系统卸载McAfee杀毒软件
  9. dsp31段最佳调音图_DSP调音技术~DSP功放31段EQ详解~DSP调音师推荐
  10. 安装cnpm后运行报cnpm :无法加载文件 C:\Users\29038\AppData\Roaming\npm\cnpm.ps1,因为在此系统上禁止运行脚本。