简单了解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实现按任意键继续/退出的功能
Aug 19 Python
好用的Python编辑器WingIDE的使用经验总结
Aug 31 Python
一个基于flask的web应用诞生 flask和mysql相连(4)
Apr 11 Python
Python中enumerate()函数编写更Pythonic的循环
Mar 06 Python
数据清洗--DataFrame中的空值处理方法
Jul 03 Python
纯python进行矩阵的相乘运算的方法示例
Jul 17 Python
Pandas之groupby( )用法笔记小结
Jul 23 Python
python 哈希表实现简单python字典代码实例
Sep 27 Python
解决reload(sys)后print失效的问题
Apr 25 Python
Selenium自动化测试工具使用方法汇总
Jun 12 Python
python数据抓取3种方法总结
Feb 07 Python
python编程学习使用管道Pipe编写优化代码
Nov 20 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
php程序效率优化的一些策略小结
2010/07/17 PHP
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
Javascript 中的 call 和 apply使用介绍
2012/02/22 Javascript
可在线编辑网页文字效果代码(单击)
2013/03/02 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
JavaScript的React框架中的JSX语法学习入门教程
2016/03/05 Javascript
Bootstrap Navbar Component实现响应式导航
2016/10/08 Javascript
微信分享调用jssdk实例
2017/06/08 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
angular6的table组件开发的实现示例
2018/12/26 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
Python中os和shutil模块实用方法集锦
2014/05/13 Python
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
Python实现把数字转换成中文
2015/06/29 Python
Python 操作MySQL详解及实例
2017/04/30 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
2019/01/29 Python
在python下使用tensorflow判断是否存在文件夹的实例
2019/06/10 Python
Python shutil模块用法实例分析
2019/10/02 Python
pytorch 彩色图像转灰度图像实例
2020/01/13 Python
关于keras中keras.layers.merge的用法说明
2020/05/23 Python
使用css3制作动感导航条示例
2014/01/26 HTML / CSS
HTML5新增的8类INPUT输入类型介绍
2015/07/06 HTML / CSS
H5混合开发app如何升级的方法
2018/01/10 HTML / CSS
基于canvas的骨骼动画的示例代码
2018/06/12 HTML / CSS
5.12护士节演讲稿
2014/04/30 职场文书
教师竞聘演讲稿
2014/05/16 职场文书
员工合理化建议书
2014/05/19 职场文书
2015年依法治校工作总结
2015/07/27 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
springboot中的pom文件 project报错问题
2022/01/18 Java/Android