简单了解Python中的几种函数

作者:PING1 时间:2023-09-30 06:11:55 

几个特殊的函数(待补充)

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.

来源:http://www.cnblogs.com/pingqiang/p/7774980.html

标签:python,函数
0
投稿

猜你喜欢

  • tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现

    2021-06-03 17:02:32
  • php swoft框架实例用法

    2024-05-11 09:45:02
  • 在Django框架中设置语言偏好的教程

    2022-01-18 22:47:35
  • Python查找最长不包含重复字符的子字符串算法示例

    2021-05-25 23:05:02
  • JS前端加密算法示例

    2024-04-22 22:18:28
  • python 中pass和match使用方法

    2023-07-17 05:49:47
  • 深入学习Golang并发编程必备利器之sync.Cond类型

    2024-05-09 14:58:34
  • CSS 表格元素内容的定位 0

    2008-08-01 17:31:00
  • SQL Server上进行表设计时表的主键设计问题

    2010-06-24 16:10:00
  • Vue组件间的样式冲突污染问题详解

    2023-07-02 16:59:33
  • 深入浅析mybatis oracle BLOB类型字段保存与读取

    2024-01-15 02:21:26
  • javascript如何实现360度全景照片问题汇总

    2024-04-10 10:43:38
  • MySql如何获取相邻数据

    2024-01-16 04:36:53
  • SQL Server中的SQL语句优化与效率问题

    2024-01-20 05:26:57
  • 将多宿主计算机配置为SQL Server访问

    2011-01-04 16:17:00
  • 基于Django的乐观锁与悲观锁解决订单并发问题详解

    2021-07-14 19:42:08
  • Java通过数据库表生成实体类详细过程

    2024-01-23 15:39:06
  • oracle,mysql,SqlServer三种数据库的分页查询的实例

    2024-01-13 13:04:38
  • Python实现的拟合二元一次函数功能示例【基于scipy模块】

    2023-10-09 00:32:02
  • 谈谈FACEBOOK的一处产品细节

    2008-03-11 11:05:00
  • asp之家 网络编程 m.aspxhome.com