简单了解Python中的几种函数


Posted in Python onNovember 03, 2017

几个特殊的函数(待补充)

python是支持多种范型的语言,可以进行所谓函数式编程,其突出体现在有这么几个函数: filter、map、reduce、lambda、yield

lambda

>>> g = lambda x,y:x+y #x+y,并返回结果
>>> g(3,4)
7
>>> (lambda x:x**2)(4) #返回4的平方
16

lambda函数的使用方法:

在lambda后面直接跟变量

变量后面是冒号

冒号后面是表达式,表达式计算结果就是本函数的返回值

冒号后面是表达式,表达式计算结果就是本函数的返回值

比如,要打印一个list,里面依次是某个数字的1次方,二次方,三次方,四次方。用lambda可以这样做:

>>> lamb = [ lambda x:x,lambda x:x**2,lambda x:x**3,lambda x:x**4 ]
>>> for i in lamb:
...   print i(3),
... 
3 9 27 81

map

map()是python的一个内置函数,它的基本样式是:

map(func,seq)

func是一个函数,seq是一个序列对象。在执行的时候,序列对象中的每个元素,按照从左到右的顺序,依次被取出来,并放入

到func那个函数里面,并将func的返回值依次存到一个list中。如

>>> items = [1,2,3,4,5]
>>> squared = []
>>> for i in items:
...   squared.append(i**2)
... 
>>> squared
[1, 4, 9, 16, 25]

>>> def sqr(x): return x**2
... 
>>> map(sqr,items)
[1, 4, 9, 16, 25]

>>> map(lambda x: x**2, items)
[1, 4, 9, 16, 25]

>>> [ x**2 for x in items ]   #这个我最喜欢了,一般情况下速度足够快,而且可读性强
[1, 4, 9, 16, 25]

要点:

对iterable中的每个元素,依次应用function的方法(本质上就是一个for循环)

将所有结果返回一个list

如果参数很多,则对那些参数并行执行function

继续下面两个例子:

>>> lst1 = [1,2,3,4,5]
>>> lst2 = [6,7,8,9,0]
>>> map(lambda x,y: x+y, lst1,lst2)   #将两个列表中的对应项加起来,并返回一个结果列表
[7, 9, 11, 13, 5]
>>> lst1 = [1,2,3,4,5]
>>> lst2 = [6,7,8,9,0]
>>> lst3 = [7,8,9,2,1]
>>> map(lambda x,y,z: x+y+z, lst1,lst2,lst3)
[14, 17, 20, 15, 6]

可以看到map函数的强大和简洁。如果使用for循环将会很繁琐

reduce

直接看例子:

>>> reduce(lambda x,y: x+y,[1,2,3,4,5])
15

reduce函数的计算方式是将列表中的元素累加,((((1+2)+3)+4)+5)=15 与map函数相比较就可以看出两者之间的区别。map是上下运算,reduce是横着逐个元素进行运算。

reduce含可以接受第三个值作为初始值:例如

>>> reduce(lambda x,y: x+y,[1,2,3,4,5],100)
115

上述列表中计算将以100为初始值执行累加计算,先计算 100+1

filter

filter的中文含义是“过滤器”,在python中,它就是起到了过滤器的作用.

通过下面代码体会:

>>> numbers = range(-5,5)
>>> numbers
[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]

>>> filter(lambda x: x>0, numbers) 
[1, 2, 3, 4]

>>> [x for x in numbers if x>0]   #与上面那句等效
[1, 2, 3, 4]

>>> filter(lambda x: x > 3, [1,2,3,4,5]) 
[4,5]

拜读下filter的官方文档解释:

filter(...)
  filter(function or None, sequence) -> list, tuple, or string
  
  Return those items of sequence for which function(item) is true. If
  function is None, return the items that are true. If sequence is a tuple
  or string, return the same type, else return a list.

总结

以上就是本文关于简单了解Python中的几种函数的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Python算法输出1-9数组形成的结果为100的所有运算式、Python生成数字图片代码分享等,有什么问题可以随时留言,小编会及时回复大家的。

Python 相关文章推荐
python多线程抓取天涯帖子内容示例
Apr 03 Python
Python里disconnect UDP套接字的方法
Apr 23 Python
Python线性方程组求解运算示例
Jan 17 Python
python 中if else 语句的作用及示例代码
Mar 05 Python
Python多进程原理与用法分析
Aug 21 Python
python读取TXT每行,并存到LIST中的方法
Oct 26 Python
对python:print打印时加u的含义详解
Dec 15 Python
python数据预处理 :数据共线性处理详解
Feb 24 Python
基于Python把网站域名解析成ip地址
May 25 Python
如何用python插入独创性声明
Mar 31 Python
Python基础教程,Python入门教程(超详细)
Jun 24 Python
如何利用opencv判断两张图片是否相同详解
Jul 07 Python
python Pygame的具体使用讲解
Nov 03 #Python
Python算法输出1-9数组形成的结果为100的所有运算式
Nov 03 #Python
django定期执行任务(实例讲解)
Nov 03 #Python
python嵌套字典比较值与取值的实现示例
Nov 03 #Python
基于Python os模块常用命令介绍
Nov 03 #Python
django实现同一个ip十分钟内只能注册一次的实例
Nov 03 #Python
Python实现1-9数组形成的结果为100的所有运算式的示例
Nov 03 #Python
You might like
实现分十页分向前十页向后十页的处理
2006/10/09 PHP
分享下PHP register_globals 值为on与off的理解
2013/09/26 PHP
PHP Curl出现403错误的解决办法
2014/05/29 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
2014/08/05 PHP
php + nginx项目中的权限详解
2017/05/23 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
WEB高性能开发之疯狂的HTML压缩
2010/06/19 Javascript
解析Jquery的LigerUI如何实现文件上传
2013/07/09 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
简介JavaScript中setUTCSeconds()方法的使用
2015/06/12 Javascript
javascript模拟C#格式化字符串
2015/08/26 Javascript
第三篇Bootstrap网格基础
2016/06/21 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
JS实现的Unicode编码转换操作示例
2017/04/28 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
Vue.use源码学习小结
2018/06/20 Javascript
Angular5中状态管理的实现
2018/09/03 Javascript
vue项目打包后怎样优雅的解决跨域
2019/05/26 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
python操作sqlite的CRUD实例分析
2015/05/08 Python
在Django中创建动态视图的教程
2015/07/15 Python
python实现遍历文件夹修改文件后缀
2018/08/28 Python
Django的Modelforms用法简介
2019/07/27 Python
利用anaconda作为python的依赖库管理方法
2019/08/13 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
如何处理简单的PHP错误
2015/10/14 面试题
Python是如何进行类型转换的
2013/06/09 面试题
什么是servlet
2012/05/08 面试题
体育教师自我鉴定
2014/02/12 职场文书
公司踏青活动方案
2014/08/16 职场文书
2015年村计划生育工作总结
2015/04/28 职场文书
goland 清除所有的默认设置操作
2021/04/28 Golang