简单了解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 相关文章推荐
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
Nov 27 Python
python根据京东商品url获取产品价格
Aug 09 Python
不要用强制方法杀掉python线程
Feb 26 Python
Python代码缩进和测试模块示例详解
May 07 Python
kafka-python批量发送数据的实例
Dec 27 Python
python使用正则筛选信用卡
Jan 27 Python
python3对拉勾数据进行可视化分析的方法详解
Apr 03 Python
Python HTTP下载文件并显示下载进度条功能的实现
Apr 02 Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 Python
用sleep间隔进行python反爬虫的实例讲解
Nov 30 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
Jan 06 Python
python如何读取.mtx文件
Apr 22 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
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
PHP.MVC的模板标签系统(四)
2006/09/05 PHP
str_replace只替换一次字符串的方法
2013/04/09 PHP
PHP生成随机密码方法汇总
2015/08/27 PHP
使用PHP实现生成HTML静态页面
2015/11/18 PHP
PHP实现二维数组根据key进行排序的方法
2016/12/30 PHP
php微信开发之关注事件
2018/06/14 PHP
PHP中Static(静态)关键字功能与用法实例分析
2019/04/05 PHP
Jquery实现自定义tooltip示例代码
2014/02/12 Javascript
JavaScript学习心得之概述
2015/01/20 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
2017/09/05 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
JS实现自定义状态栏动画文字效果示例
2017/10/12 Javascript
vue基于v-charts封装双向条形图的实现代码
2019/12/09 Javascript
vue组件开发之tab切换组件使用详解
2020/08/21 Javascript
Node.js 中如何收集和解析命令行参数
2021/01/08 Javascript
python实现中文分词FMM算法实例
2015/07/10 Python
Python基于pillow判断图片完整性的方法
2016/09/18 Python
详解爬虫被封的问题
2019/04/23 Python
Jupyter打开图形界面并画出正弦函数图像实例
2020/04/24 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
python openCV实现摄像头获取人脸图片
2020/08/20 Python
加拿大建筑和装修专家:Reno-Depot
2017/12/21 全球购物
英国鲜花速递:Serenata Flowers
2018/04/03 全球购物
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
大学生自我鉴定
2013/12/16 职场文书
给幼儿园老师的表扬信
2014/01/19 职场文书
校运会入场式解说词
2014/02/10 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
党的群众路线教育实践活动心得体会
2014/03/03 职场文书
校园游戏活动新闻稿
2014/10/15 职场文书
三十年同学聚会致辞
2015/07/28 职场文书
低端且暴利的线上线下创业项目分享
2019/09/03 职场文书
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js