匿名函数lambda

lambda argument1,argument2,...argumentN :expression using arguments

1、lambda是一个表达式,而不是一个语句。

因为这一点,lambda可以出现在python语法不允许def出现的地方---例如,在一个列表常量中或者函数调用的参数中。

2、lambda 的主体是一个单个的表达式,而不是一个代码块。

lambda是一个为编写简单的函数设计的,而def用来处理更大的任务。

例如:

lambda表示式写法:
f=lambda x,y,z:x+y+z print(f(2,3,4)) 打印结果:
9 函数写法:
def f(x,y,z):
return x+y+z print(f(2,3,4))
打印结果:
9
lambda表示式写法:
foo=lambda a='lll',b='que',c='rade':a+b+c print(foo('mas'))
打印结果:
masquerade 函数写法:
def foo(a='lll',b='que',c='rade'):
return a+b+c print(foo('mas'))
打印结果:
masquerade
l=[lambda x:x**2,lambda x:x**3,lambda x:x**4]
for f in l:
print(f(2))
打印结果:
4
8
16 print(l[1](3))
打印结果:
27

 嵌套的lambda

式一:
def foo(x):
return (lambda y:x+y) bar=foo(99)
print(bar(2)) 打印结果:101 式二:
foo=lambda x:(lambda y:x+y)
bar=foo(99)
print(bar(2)) 式三:
print((lambda x:(lambda y:x+y)(99))(2))
打印结果:
101

filter函数

filter函数会对指定序列执行过滤操作。

定义:filter(function or None, sequence) ->iterator

filter函数会对序列参数sequence中的每个元素调用function函数,最后返回的结果包含调用结果为True的元素。

返回可迭代对象,需要list调用来显示所有结果。

def f(x):
if x>20:
return True
else:
return False l1=[2,8,15,22,36]
print(filter(f,l1))
l2=filter(f,l1)
print(l2.__next__()) #22
print(l2.__next__()) #36
print(l2.__next__()) #StopIteration #或者我们可以使用for循环遍历过滤器l2:
for i in l2:
print(i) 打印结果:
22
36
print(list(filter(lambda x:x>0,range(-5,5))))    #[1, 2, 3, 4]
print(list(filter(None,[1,2,3,4,5])))   #[1, 2, 3, 4, 5]

map(func,iter1,iter2)函数-> iterator

通过定义可以看到,这个函数的第一个参数是一个函数,剩下的参数是一个或多个序列,返回值是一个迭代器。

function可以理解为是一个一对一或多对一函数,map的作用是以参数序列中的每一个元素调用function函数,返回包含每次function函数返回值的迭代器。

返回可迭代对象,需要调用list来显示所有结果。

def f(x,y):
return (x,y)
l1 = [ 0, 1, 2, 3, 4, 5, 6 ]
l2 = [ 'Sun', 'M', 'T', 'W', 'T', 'F', 'S' ]
l3=map(f,l1,l2)
# print(l3) #<map object at 0x0000000002301470>
print(list(l3)) #[(0, 'Sun'), (1, 'M'), (2, 'T'), (3, 'W'), (4, 'T'), (5, 'F'), (6, 'S')] def f2(x):
return x**2
print(list(map(f2,l1))) #[0, 1, 4, 9, 16, 25, 36] def f3(x,y):
return x*2,y*2 print(list(map(f3,l1,l2))) #[(0, 'SunSun'), (2, 'MM'), (4, 'TT'), (6, 'WW'), (8, 'TT'), (10, 'FF'), (12, 'SS')]
print(list(map(lambda x: x + 2, [1, 2, 3])))    #[3, 4, 5]
print(list(map(pow,[1,2,3],[2,3,4]))) #[1, 8, 81]
#pow(x,y)是计算x的y次幂(方)

reduce函数

在Python 3里,reduce()函数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里,用的话要先引入:即functools.reduce(function,sequence,initial)

reduce函数会对参数序列中元素进行累积。

定义:

function参数是一个有两个参数的函数,reduce依次从iterable中取一个元素,和上一次调用function的结果做参数再次调用function。

第一次调用function时,如果提供initial参数,会以iterable中的第一个元素和initial作为参数调用function,否则会以iterable中的前两个元素做参数调用function。

等价于:

def reduce(function, iterable, initializer=None):

it = iter(iterable)

    if initializer is None:

        value = next(it)

    else:

        value = initializer

    for element in it:

        value = function(value, element)

return value

示例:

import functools

print(functools.reduce(lambda x,y:x+y,[1,2,3,4]))       #10
print(functools.reduce(lambda x,y:x+y,[1,2,3,4],10)) #20
print(functools.reduce(lambda x,y:x*y,[1,2,3,4])) #24 ##############
如果没有initial参数,这么算:(((1+2)+3)+4) 如果有initial参数,这么算: ((((10+1)+2)+3)+4)

注意:function函数不能为None,function必须是有2个参数的函数。

zip函数

定义:zip([seql, ...])接受一系列可迭代对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。

print(list(zip([1,2,3],[11,22,33])))    #两个列表长度一致

#[(1, 11), (2, 22), (3, 33)]
print(list(zip([1,2,3],[11,22,33,44,55]))) #两个列表长度不一致,以短的为准 #[(1, 11), (2, 22), (3, 33)]

Python常用内置函数整理(lambda,reduce,zip,filter,map)的更多相关文章

  1. python常用内置函数整理

    1.最常见的内置函数是print print("Hello World!") 2.数学运算 abs(-5) # 取绝对值,也就是5 round(2.6) # 四舍五入取整,也就是3 ...

  2. python常用内置函数

    Python所以内置函数如下: 下面列举一些常用的内置函数: chr()和ord() chr()将数字转换为对应的ascii码表字母 >>> r=chr(65) >>&g ...

  3. Python常用内置函数介绍

    Python提供了一个内联模块buildin.内联模块定义了一些开发中经常使用的函数,利用这些函数可以实现数据类型的转换.数据的计算.序列的处理等功能.下面将介绍内联模块中的常用函数. Python内 ...

  4. $Python常用内置函数典型用法

    Python中有许多功能丰富的内置函数,本文基于Python 2.7,就常用的一些函数的典型用法做一些积累,不断更新中. sorted函数的三种用法 # coding:utf-8 # sorted函数 ...

  5. python常用内置函数和关键字

    常用内置方法 在Python中有许许多多的内置方法,就是一些Python内置的函数,它们是我们日常中经常可以使用的到的一些基础的工具,可以方便我们的工作. 查看所有的内置类和内置方法 # 方法一 bu ...

  6. python常用内置函数用法精要

    用一个表格大致总结一下所有的内置函数用法,如下: 函数 功能简要说明 abs(x) 返回数字x的绝对值或复数x的模 all(iterable) 如果对于可迭代对象中所有元素x都等价于True,则返回T ...

  7. python常用内置函数(转载)

    1. 和数字相关 1.1 数据类型 1.2 进制转换 1.3 数学运算 2. 和数据结构相关 2.1 序列 2.2 数据集合 2.3 相关内置函数 3. 和作用域相关 4. 和迭代器生成器相关 5. ...

  8. python 常用内置函数简介

    1.作用域相关内置函数globals()--获取全局变量的字典locals()--获取执行本方法所在命名空间内的局部变量的字典 2.和调用相关callable(o),o是参数,看这个变量是不是可调用. ...

  9. 内置函数_map()、reduce()、filter()

    map().reduce().filter() map()内置函数把一个函数func依次映射到序列或迭代器对象的每个元素上,并返回一个可迭代的map对象作为结果,map对象中每个元素是原序列中元素经过 ...

随机推荐

  1. 初步学习JS中的闭包

    JS高级程序设计(3rd)中对闭包的定义就是一句话,首先闭包是一个函数,怎样的函数呢?有权访问另一个函数作用域中的变量 的函数.而创建闭包的常见方式就是在一个函数的内部创建另一个函数,就是嵌套函数. ...

  2. 小程序页面间传值(处理传值为对象,简单传值直接用options.XX的形式获取)

    bookgoods:function(){ var Json = JSON.stringify(this.data.goods) wx.navigateTo({ url: '/pages/bookgo ...

  3. 【SQL SERVER】常见问题

    [账户] 偷懒默认安装了全部默认功能到虚拟服务器上,所以并没有设置sa账户的过程,自然只能从windows身份验证进入数据库.于是还得自己来为sa账户添加登陆权限. 步骤如下: 1. windows身 ...

  4. [转载]Java中异常的捕获顺序(多个catch)

    http://blog.sina.com.cn/s/blog_6b022bc60101cdbv.html [转载]Java中异常的捕获顺序(多个catch) (2012-11-05 09:47:28) ...

  5. ASP.NET MVC Filter过滤机制(过滤器、拦截器)

    https://blog.csdn.net/knqiufan/article/details/82413885 本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/ ...

  6. 鸟哥私房菜学习——centos 7_安装

    下面是我安装时遇到问题后搜索找到的可行办法: 准备工具: 8G左右U盘; 最新版UltraISO; CentOS7光盘镜像; CentOS7的镜像文件,可以在网易的开源镜像站或者阿里云的开源镜像站下载 ...

  7. [LeetCode] 342. Power of Four(位操作)

    传送门 Description Given an integer (signed 32 bits), write a function to check whether it is a power o ...

  8. ash: export: `/usr/lib/jvm/jdk1.8.0_201/lib/dt.jar': 不是有效的标识符

    ash: export: `/usr/lib/jvm/jdk1.8.0_201/lib/dt.jar': 不是有效的标识符 ps: 如果有任何问题可以评论留言,我看到后会及时解答,评论或关注,您的鼓励 ...

  9. [Linux] 028 源码包安装过程

    1. 安装准备 安装 C 语言编译器 下载源码包 如:apache 相应源码包下载地址 2. 安装注意事项 源代码保存位置:/usr/local/src 软件安装位置:/usr/local 如何确定安 ...

  10. Redis进行数据同步

    数据库中的数据一般都涉及到需要对数据进行备份的,这样可以保证数据的安全性,并且如果将一个主设备的数据同步到多个从设备上,允许用户访问数据时可以从多个从设备进行读取, 这样还可以缓解主设备的压力,Red ...