python函数式编程

高阶函数:就是把函数当成参数传递的一种函数

1、函数名可以进行赋值;

2、函数名可以作为函数参数,还可以作为函数的返回值;

a、函数是第一类对象

b、函数可以被赋值

c、可以被当做参数

d、可以当做返回值

e、可以作为容器类型的元素

def f(n):return n*n
def foo(a,b,func):ret = func(a) + func(b)return ret
foo(1,2,f)
print(foo(1,2,f))
#传入参数a=1,b=2,func=f;
#ret = f(1) + f(2);
#f(1)=1,f(2)=4此时调用f函数;
#ret=5;

map函数:

描述

map() 会根据提供的函数对指定序列做映射。

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

语法

map() 函数语法:

1
map (function, iterable, ...)

参数

  • function -- 函数
  • iterable -- 一个或多个序列

返回值

Python 2.x 返回列表。

Python 3.x 返回迭代器。

实例

1
2
3
4
5
6
7
8
9
10
11
>>> def  square(x) :             # 计算平方数
...      return  * *  2
...
>>>  map (square, [ 1 , 2 , 3 , 4 , 5 ])    # 计算列表各个元素的平方
[ 1 4 9 16 25 ]
>>>  map ( lambda  x: x  * *  2 , [ 1 2 3 4 5 ])   # 使用 lambda 匿名函数
[ 1 4 9 16 25 ]
  
# 提供了两个列表,对相同位置的列表数据进行相加
>>>  map ( lambda  x, y: x  +  y, [ 1 3 5 7 9 ], [ 2 4 6 8 10 ])
[ 3 7 11 15 19 ]

msg = [1,12,33,42,15,16]
#需求自增1
def add_one(x):return x+1
#需求自减1
def reduce(x):return x-1
#需求平方
def pf(x):return x**2
#实现逻辑
def fangfa(func,red):ret = []for i in red:res = func(i)ret.append(res)return ret
print(fangfa(add_one,msg))
print(fangfa(reduce,msg))
print(fangfa(pf,msg))print(fangfa(lambda x:x+1,msg)) #用lambda函数替换add_one函数
print(fangfa(lambda x:x-1,msg)) #用lambda函数替换requce函数
print(fangfa(lambda x:x**2,msg))#用lambda函数替换pf函数print(list(map(lambda x:x+1,msg))) #map处理的结果是一个可迭代对象,python3中需用list转换;
print(list(map(lambda x:x-1,msg))) #map的第一个参数是逻辑,第二个参数是可迭代对象;
print(list(map(lambda x:x**2,msg)))

filter函数:

描述

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

语法

以下是 filter() 方法的语法:

1
filter (function, iterable)

参数

  • function -- 判断函数。
  • iterable -- 可迭代对象。

返回值

返回列表

实例

以下展示了使用 filter 函数的实例:

1
2
3
4
5
6
7
def  is_odd(n):
     return  %  2  = =  1
  
newlist  =  filter (is_odd, [ 1 2 3 4 5 6 7 8 9 10 ])
print (newlist)
[ 1 3 5 7 9 ]

lise_l = ["sb_asd","sb_we","sb_ig","rng"]
#需求去掉开头是sb的
def sh_show(n):return n.startswith("sb")
#实现逻辑
def filter_test(func,array):red = []for i in array:if not sh_show(i):red.append(i)return red
print(filter_test(sh_show,lise_l))print(filter_test(lambda n:n.startswith("sb"),lise_l))#lambdaprint(list(filter(lambda n:not n.startswith("sb"),lise_l)))#filter

reduce函数

描述

reduce() 函数会对参数序列中元素进行累积。

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

在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在 fucntools 模块里,如果想要使用它,则需要通过引入 functools 模块来调用 reduce() 函数:

1
from  functools  import  reduce
1
2
3
4
5
6
7
from  functools  import  reduce
def  add(x,y):
     return  +  y
print  ( reduce (add,  range ( 1 101 )))
  

语法

reduce() 函数语法:

1
2
reduce (function, iterable[, initializer])
  

参数

  • function -- 函数,有两个参数
  • iterable -- 可迭代对象
  • initializer -- 可选,初始参数

返回值

返回函数计算结果。

实例

以下实例展示了 reduce() 的使用方法:

1
2
3
4
5
6
7
>>> def  add(x, y) :             # 两数相加
...      return  +  y
...
>>>  reduce (add, [ 1 , 2 , 3 , 4 , 5 ])    # 计算列表和:1+2+3+4+5
15
>>>  reduce ( lambda  x, y: x + y, [ 1 , 2 , 3 , 4 , 5 ])   # 使用 lambda 匿名函数
15

 python的内置函数

    内置函数    
abs() divmod() input() open() staticmethod()
all() enumerate() int() ord() str()
any() eval() isinstance() pow() sum()
basestring() execfile() issubclass() print() super()
bin() file() iter() property() tuple()
bool() filter() len() range() type()
bytearray() float() list() raw_input() unichr()
callable() format() locals() reduce() unicode()
chr() frozenset() long() reload() vars()
classmethod() getattr() map() repr() xrange()
cmp() globals() max() reverse() zip()
compile() hasattr() memoryview() round() __import__()
complex() hash() min() set()  
delattr() help() next() setattr()  
dict() hex() object() slice()  
dir() id() oct() sorted() exec 内置表达式
  内置函数用法

max和min高级用法:

用法

1、max进行比较时传入的数据类型必须是可迭代对象(基本原理就是一个for循环依次取出可迭代对象中的每一个元素进行比较);

2、比较时从第一个元素进行比较(按ascii码进行排序),如果第一个元素分出大小则后面就不进行比较了;

1
2
3
ll  =  [ "10a" , "A20" , "A10" ]
print ( max (ll))
A20

1
2
3
msg  =  { "age1" : 18 , "age2" : 20 }
print ( max ( zip (msg.values(),msg.keys())))
( 20 'age2' )

1
2
3
4
5
6
7
people  =  [
     { "name" : "alex" , "age" : 70 },
     { "name" : "wpq" , "age" : 100 },
     { "name" : "lhf" , "age" : 30 },
     { "name" : "lw" , "age" : 50 }
]
print ( max (people,key = lambda  dic:dic[ "age" ]))  #传入key参数

转载于:https://www.cnblogs.com/youxiu123/p/11480677.html

函数【七】高阶函数/内置函数相关推荐

  1. python的shutil模块是内置的_Python之shutil模块11个常用函数详解,python内置函数是什么...

    Python之shutil模块11个常用函数详解,python内置函数是什么 shutil 是 Python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建.删除.查 ...

  2. python3_函数_形参调用方式 / 不定长参数 / 函数返回值 / 变量作用域 / 匿名函数 / 递归调用 / 函数式编程 / 高阶函数 / gobal和nonlocal关键字 / 内置函数

    1.形参的调用方式 1. 位置参数调用 2. 关键词参数调用 原则: 关键词参数调用不能写在位置参数调用的前边 def test1(name, age):print("name:" ...

  3. 七、初识python-str内置函数、列表与列表函数(课时3)

    str内置函数 一.查找类函数 find函数: 在原字符串寻找一个子字符串,返回第一次发现这个字符串的位置,可选定索引区间(rfind为从右往左找,lfind为从左往右找) s = "Zha ...

  4. 五、python函数、装饰器、内置函数、json及模块

    一.递归调用 1.一个函数自己调用自己就是递归调用,最多一个函数递归调用自己999次,超过就会出错 2.递归必须有一个明确的结束条件 3.每次进入更深一层递归时,问题规模相比上次递归都应有所减少 4. ...

  5. python常用内置函数总结-python常见的内置函数

    函数分为自定义函数和内置函数 python内置函数分类: 一.强制转换 int() / str() / bool() / list() / tuple() / dict() / set() 二.输入输 ...

  6. python函数type的用意_Python内置函数Type()函数一个有趣的用法

    Python内置函数Type()函数一个有趣的用法 今天在网上看到type的一段代码 ,然后查了一下文档,才知道type还有三个参数的用法. 以前只是知道type可以检测对象类型.然后发现了一个有趣的 ...

  7. 2019-07-12 函数递归、二分法、匿名函数、三元表达式、内置函数

    一.递归函数 我理解为递归函数也是函数嵌套的一种,函数在调用时,直接或间接的调用了自身. 简单的直接调用本身(这种调用会一直循环下去,会很占内存空间,所以python解释器为了防止无限占用内存,对这种 ...

  8. 让python飞:形象理解python 全局变量、局部变量、内部函数、外部函数、ascii码、内置函数

    Day06凯尔特与佛印闯双蛇洞 秦始皇得知有一兵马俑逃脱,立即派出大内高手凯尔特前去捉拿.凯尔特一路追踪到熊山寺,但寺门紧闭,遂从后门入寺. 凯尔特悄悄溜到后山,见到高台周围有许多狮子蠢蠢欲睡.高台上 ...

  9. python内置的读取文件函数_Python函数篇(3)-内置函数、文件处理(已更新)

    1.内置函数 上一篇文章中,我重点写了reduce.map.filter3个内置函数,在本篇章节中,会补充其他的一些常规内置函数,并重点写max,min函数,其他没有说明的函数,会在后面写到类和面向对 ...

  10. python中f点flush是什么函数_Python文件操作及内置函数flush原理解析

    1.打开文件得到文件句柄并赋值给一个变量 2.通过句柄对文件进行操作 3.关闭文件 示例文件 '你好呀' 我是于超 嗯 再见 文件操作基本流程 f=open('chenli',encoding='ut ...

最新文章

  1. php基础 简书,php基础
  2. loadrunner录制0事件_Android Studio 4.0发布:全新的 Motion 编辑器及众多更新
  3. Jquery v1.3.2 与v1.4.2在andSelf()函数方面的区别
  4. 一文了解什么是指数族分布
  5. linux系统下的“静态库和动态库”专题之二:库的创建和使用
  6. OpenCV学习笔记(二):3种常用访问图像中像素的方式
  7. SQL Server - THROW字句对比RAISERROR子句
  8. qt同时两个动画执行_Qt 动画应用
  9. CString Format
  10. 数据分析入门——深入浅出数据分析
  11. Python get-pip.py文件
  12. PMO和PM有哪些区别 谁管谁
  13. JavaSE_kuang
  14. 垂杨柳中学2021年高考成绩查询时间,2021年中考成绩
  15. 龟兔赛跑(Java)
  16. 大厂架构师经验分享!致Android高级工程师的一封信,架构师必备技能
  17. Path Finder for Mac(Mac文件管理工具)
  18. 如何制作SOP?SOP制作流程是什么?详解:SOP的制作方法
  19. 工业ERP管理系统新增功能对企业有哪些好处?
  20. linux EHCI DRIVER之中断处理函数ehci_irq()分析(一)

热门文章

  1. 手把手教你如何玩转Solr(包含项目实战)[转载]
  2. OA系统价格太昂贵?来用开源项目搭建一个吧
  3. android paint style,Android 绘图基础三 paint使用
  4. 高级转录组调控分析和R语言数据可视化第十四期 (线上线下开课)
  5. 低年级趣味写话——绘本《小猪变形计》仿写学生优作
  6. 技能提升--1枚程序员的健身入门
  7. 2014,说说这个燥热的暑假
  8. PyCharm打包py文件为exe文件
  9. 以“老师”命名的 Julia 语言,结合了 Python、R、C的优点,到底有多厉害!
  10. paypal卖家如何收款?