简单了解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可跨平台实现获取按键的方法
Mar 05 Python
Python模块搜索概念介绍及模块安装方法介绍
Jun 03 Python
浅谈Python处理PDF的方法
Nov 10 Python
详解Python之unittest单元测试代码
Jan 24 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
Sep 03 Python
Django model序列化为json的方法示例
Oct 16 Python
解决Python设置函数调用超时,进程卡住的问题
Aug 08 Python
Python autoescape标签用法解析
Jan 17 Python
python mysql 字段与关键字冲突的解决方式
Mar 02 Python
解决在keras中使用model.save()函数保存模型失败的问题
May 21 Python
解决pyinstaller打包运行程序时出现缺少plotly库问题
Jun 02 Python
Python数据分析库pandas高级接口dt的使用详解
Dec 11 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音乐采集(部分代码)
2007/02/14 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
2014/09/22 PHP
php正则修正符用法实例详解
2016/12/29 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
PHP调用全国天气预报数据接口查询天气示例
2019/02/20 PHP
JS延迟加载(setTimeout) JS最后加载
2010/07/15 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
Bootstrap3学习笔记(二)之排版
2016/05/20 Javascript
简单几步实现返回顶部效果
2016/12/05 Javascript
JS控件bootstrap datepicker使用方法详解
2017/03/25 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
BootStrap Table 后台数据绑定、特殊列处理、排序功能
2017/05/27 Javascript
Easy UI动态树点击文字实现展开关闭功能
2017/09/30 Javascript
JS设计模式之命令模式概念与用法分析
2018/02/06 Javascript
JS中promise化微信小程序api
2018/04/12 Javascript
深度了解vue.js中hooks的相关知识
2019/06/14 Javascript
我所理解的JavaScript中的this指向
2020/09/04 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
jQuery实现动态向上滚动
2020/12/21 jQuery
python面向对象多线程爬虫爬取搜狐页面的实例代码
2018/05/31 Python
django的ORM模型的实现原理
2019/03/04 Python
Python基于paramunittest模块实现excl参数化
2020/04/26 Python
记一次django内存异常排查及解决方法
2020/08/07 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
全球最大的在线橄榄球商店:Lovell Rugby
2018/05/20 全球购物
Martinelli官方商店:西班牙皮鞋和高跟鞋品牌
2019/07/30 全球购物
Linux内核产生并发的原因
2012/07/13 面试题
如何反序的迭代一个序列?how do I iterate over a sequence in reverse order
2012/02/04 面试题
志愿者活动总结报告
2014/06/27 职场文书
民间个人借款协议书
2014/09/30 职场文书
毕业生政审意见范文
2015/06/04 职场文书
同意报考公务员证明
2015/06/17 职场文书
MySQL EXPLAIN输出列的详细解释
2021/05/12 MySQL
Java数组详细介绍及相关工具类
2022/04/14 Java/Android