简单了解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的Django框架部署的一些建议
Apr 09 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
Apr 21 Python
python实现支付宝当面付(扫码支付)功能
May 30 Python
pandas求两个表格不相交的集合方法
Dec 08 Python
python消费kafka数据批量插入到es的方法
Dec 27 Python
python利用thrift服务读取hbase数据的方法
Dec 27 Python
python读取csv和txt数据转换成向量的实例
Feb 12 Python
python环境路径配置以及命令行运行脚本
Apr 02 Python
django富文本编辑器的实现示例
Apr 10 Python
Django 1.10以上版本 url 配置注意事项详解
Aug 05 Python
python 实现按对象传值
Dec 26 Python
Python yield的用法实例分析
Mar 06 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邮件专题
2006/10/09 PHP
PHP MYSQL简易交互式站点开发
2016/12/27 PHP
PHP中大括号'{}'用法实例总结
2017/02/08 PHP
php更新cookie内容的详细方法
2019/09/30 PHP
javascript对象之内置对象Math使用方法
2010/04/16 Javascript
javascript Array.prototype.slice的使用示例
2013/11/14 Javascript
JS实现鼠标单击与双击事件共存
2014/03/08 Javascript
jQuery使用CSS()方法给指定元素同时设置多个样式
2015/03/26 Javascript
BootStrap实用代码片段之一
2016/03/22 Javascript
jquery popupDialog 使用 加载jsp页面的方法
2016/10/25 Javascript
基于jQuery实现的打字机效果
2017/01/16 Javascript
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
深入浅出es6模板字符串
2017/08/26 Javascript
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
用JS实现一个简单的打砖块游戏
2019/12/11 Javascript
jQuery实现获取多选框的值示例
2020/02/07 jQuery
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
python3实现TCP协议的简单服务器和客户端案例(分享)
2017/06/14 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
Python编程快速上手——Excel表格创建乘法表案例分析
2020/02/28 Python
详解HTML5中的picture元素响应式处理图片
2018/01/03 HTML / CSS
北美最大的零售退货翻新商:VIP Outlet
2019/11/21 全球购物
Johnson Fitness澳大利亚:高级健身器材
2021/03/16 全球购物
建筑工程专业毕业生自荐信
2013/10/19 职场文书
食品安全承诺书
2014/05/22 职场文书
2014企业年终工作总结
2014/12/23 职场文书
小学感恩节活动总结
2015/03/24 职场文书
2015教师年度考核评语
2015/03/25 职场文书
2015最新婚礼主持词
2015/06/30 职场文书
合理化建议书范文
2015/09/14 职场文书
golang http使用踩过的坑与填坑指南
2021/04/27 Golang