匿名函数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. HTTrack Website Copier 扫描规则

    +*.css +*.js -ad.doubleclick.net/* -mime:application/foobar+*.gif +*.jpg +*.jpeg +*.png +*.tif +*.bm ...

  2. ERROR 1146 (42S02): Table 'mysql.servers' doesn't exist

    MySQL版本:mysql5.7.21 修改用户权限,刷新权限表,报1146 mysql> flush privileges; ERROR 1146 (42S02): Table 'mysql. ...

  3. ruby的next if boolean

    next相当于continue

  4. BurpSuite从下载安装到配置使用

    为解决一个XSS安全问题,第一次使用BurpSuite,记录一下下载安装到配置使用的过程,希望能对第一次使用该工具的朋友有所帮助. 一.下载及安装 直接百度下载破解版,我下的版本是burpsuite_ ...

  5. 测开之路七十四:python处理kafka

    kafka-python地址:https://github.com/dpkp/kafka-python 安装kafka-python:pip install kafka-python 接收消息 fro ...

  6. WCF身份验证之用户名密码认证

    WCF支持多种认证技术,例如Windowns认证.X509证书.Issued Tokens.用户名密码认证等,在跨Windows域分布的系统中,用户名密码认证是比较常用的,要实现用户名密码认证,就必须 ...

  7. JS中substring()的用法

    例一: <script type="text/javascript"> var str="Hello world!" document.write( ...

  8. GD Library extension not available

    在后台文章上传封面时,遇到了这样一个错误 GD Library extension not available with this PHP installation Ubuntu Nginx 自己在本 ...

  9. Chrome打开标签页预览

    类似于Microsoft Edge浏览器上的标签页缩略图预览非常方便,其实现在谷歌浏览器正在测试相关的功能,如果想提前体验,就在地址栏输入"chrome://flags"并按下回车 ...

  10. quartz CronExpression

    一.Quartz Cron 表达式支持到七个域 名称 是否必须 允许值 特殊字符 秒 是 0-59 , - * / 分 是 0-59 , - * / 时 是 0-23 , - * / 日 是 1-31 ...