简单了解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 16 Python
Python实现简单的代理服务器
Jul 25 Python
Python实现动态加载模块、类、函数的方法分析
Jul 18 Python
Queue 实现生产者消费者模型(实例讲解)
Nov 13 Python
TensorFlow实现卷积神经网络CNN
Mar 09 Python
Python 使用PIL numpy 实现拼接图片的示例
May 08 Python
Python常见数据类型转换操作示例
May 08 Python
numpy.where() 用法详解
May 27 Python
Python3分析处理声音数据的例子
Aug 27 Python
创建Shapefile文件并写入数据的例子
Nov 26 Python
修改Pandas的行或列的名字(重命名)
Dec 18 Python
Python 操作 MySQL数据库
Sep 18 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
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
国外Lightbox v2.03.3 最新版 下载
2007/10/17 Javascript
JS打开图片另存为对话框实现代码
2012/12/26 Javascript
很好用的js日历算法详细代码
2013/03/07 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
js读取配置文件自写
2014/02/11 Javascript
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
js发送短信倒计时的简单实现方法
2016/09/08 Javascript
AngularJS 自定义过滤器详解及实例代码
2016/09/14 Javascript
javascript中的try catch异常捕获机制用法分析
2016/12/14 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
mui框架 页面无法滚动的解决方法(推荐)
2018/01/25 Javascript
Node.js Express安装与使用教程
2018/05/11 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
微信小程序实现左侧滑动导航栏
2020/04/08 Javascript
JS数组方法shift()、unshift()用法实例分析
2020/01/18 Javascript
vue+openlayers绘制省市边界线
2020/12/24 Vue.js
对比Python中__getattr__和 __getattribute__获取属性的用法
2016/06/21 Python
用Python设计一个经典小游戏
2017/05/15 Python
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
基于Django filter中用contains和icontains的区别(详解)
2017/12/12 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
Django Admin中增加导出Excel功能过程解析
2019/09/04 Python
初次部署django+gunicorn+nginx的方法步骤
2019/09/11 Python
Pytorch实现LSTM和GRU示例
2020/01/14 Python
ipython jupyter notebook中显示图像和数学公式实例
2020/04/15 Python
世界顶级足球门票网站:Live Football Tickets
2017/10/14 全球购物
英国剑桥包中文官网:The Cambridge Satchel Company中国
2018/11/06 全球购物
交通安全演讲稿
2014/01/07 职场文书
2014年乡镇植树节活动方案
2014/02/28 职场文书
学习方法演讲稿
2014/05/10 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书
pytorch中的numel函数用法说明
2021/05/13 Python
vue项目支付功能代码详解
2022/02/18 Vue.js
MyBatis在注解上使用动态SQL方式(@select使用if)
2022/07/07 Java/Android