简单了解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 基础学习教程
Feb 08 Python
python实现根据月份和日期得到星座的方法
Mar 27 Python
轻量级的Web框架Flask 中模块化应用的实现
Sep 11 Python
Scrapy的简单使用教程
Oct 24 Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
Feb 24 Python
浅析python3中的os.path.dirname(__file__)的使用
Aug 30 Python
Python常见的pandas用法demo示例
Mar 16 Python
python 中如何获取列表的索引
Jul 02 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
Apr 01 Python
Python实现代码块儿折叠
Apr 15 Python
有关pycharm登录github时有的时候会报错connection reset的问题
Sep 15 Python
Python常用配置文件ini、json、yaml读写总结
Jul 09 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
ThinkPHP模板之变量输出、自定义函数与判断语句用法
2014/11/01 PHP
php使用number_format函数截取小数的方法分析
2016/05/27 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
更优雅的事件触发兼容
2011/10/24 Javascript
Jquery异步请求数据实例代码
2011/12/28 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
2015/03/04 Javascript
JavaScript中使用指数方法Math.exp()的简介
2015/06/15 Javascript
JavaScript实现点击按钮就复制当前网址
2015/12/14 Javascript
JavaScript简单实现弹出拖拽窗口(二)
2016/06/17 Javascript
原生js实现键盘控制div移动且解决停顿问题
2016/12/05 Javascript
防止重复发送 Ajax 请求
2017/02/15 Javascript
jquery实现页面加载效果
2017/02/21 Javascript
JS异步加载的三种实现方式
2017/03/16 Javascript
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
手把手教你搭建ES6的开发运行环境
2017/07/11 Javascript
Bootstrap弹出框之自定义悬停框标题、内容和样式示例代码
2017/07/11 Javascript
利用ECharts.js画K线图的方法示例
2018/01/10 Javascript
微信小程序有旋转动画效果的音乐组件实例代码
2018/08/22 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
2019/01/16 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
Nodejs实现微信分账的示例代码
2021/01/19 NodeJs
python使用cookielib库示例分享
2014/03/03 Python
Python cx_freeze打包工具处理问题思路及解决办法
2016/02/13 Python
python中的字典操作及字典函数
2018/01/03 Python
python3爬虫之设计签名小程序
2018/06/19 Python
对python 匹配字符串开头和结尾的方法详解
2018/10/27 Python
Python使用微信接入图灵机器人过程解析
2019/11/04 Python
django haystack实现全文检索的示例代码
2020/06/24 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
Yahoo-PHP面试题2
2014/12/06 面试题
交通事故委托书范本
2014/09/28 职场文书
公司员工宿舍管理制度
2015/08/07 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL