1.lambda:使用lambda表达式可以定义一个匿名函数

  lambda表达式是一种简洁格式的函数。该表达式不是正常的函数结构,而是属于表达式的类型

  (1)基本格式:

lambda 参数,参数...:函数功能代码
如:lambda x,y:x + y 获取2个值的和的lambda函数

  例:

#方式1.声明一个简单的lambda表达式
mylamb = lambda x,y:x+y
#调用函数
result = mylamb(4,5)
print(result)

  (2)带分支格式:

lambda 参数,参数... :值1  if 条件表达式  else 值2
如:lambda sex : '有胡子' if sex == 'man' else '没胡子'

  例:

#方式2.声明一个带有分支的lambda表达式
mylamb= lambda sex : '有胡子' if sex == 'man' else '没胡子'
#调用函数
result = mylamb('woman')
print(result)

  (3)调用函数格式:

lambda 参数,参数...:其他函数(...)
如:lambda x:type(x)

  例:

#方式3.声明一个调用函数的lambda表达式
mylamb = lambda x:type(x)
#调用函数
result = mylamb('拾元')
print(result)

2.filter()对于序列中的元素进行筛选,最终获取符合条件的序列

    

  例:filter(处理函数,可迭代对象)

    #filter第一个参数为空,将获取原来序列
def findTrue(num):
if num > 0:
return True
else:
return False
nums = [1,2,3,-2,-3,-1,3]
result = filter(findTrue,nums)
for i in result:
print(i)
print(result)

  结果为:

1
2
3
3
<filter object at 0x0000000001DC6CF8>

3.map():遍历序列,对序列中每个元素进行操作,最终获取新的序列。

    

  例1: map(处理函数,可迭代对象,可迭代对象,...)

li = [11, 22, 33]
new_list = map(lambda a: a + 100, li)
for i in new_list:
print(i)
print(new_list)

  结果为:

111
122
133
<map object at 0x0000000001E05588>

  例2:

li = [11, 22, 33]
sl = [1, 2, 3]
new_list = map(lambda a, b: a + b, li, sl)
for i in new_list:
print(i)
print(new_list)

  结果为:

12
24
36
<map object at 0x0000000001DF6A20>

4.reduce()内建函数是一个二元操作函数

  用来将一个数据集合(链表,元组等)中的所有数据进行function函数操作:用传给reduce()的函数 function()(必须是一个二元操作函数)对数据集合中的第1,2个数据进行操作,得到的结果再与第三个数据使用function()函数运算。如此迭代,直到最后得到一个结果。

    

  例:格式:reduce(function, iterable[, initializer]),返回值是一个单值.

def add(x,y):
  return x+y
sum = reduce(add,[1,2,3,4,5,6,7,8,9,10])
print(sum)

# 结果为:55

注:在python 3.0.0.0以后, reduce已经不在built-in function里了, 要用它就得from functools import reduce。

  例2:

l = []
def add(x,y):
  l.append((x,y))
  end = x + y
  return end
sum = reduce(add,[1,2,3,4,5,6,7,8,9,10])
print(sum)
print(l)

  结果为:

55
[(1, 2), (3, 3), (6, 4), (10, 5), (15, 6), (21, 7), (28, 8), (36, 9), (45, 10)]

  reduce(function(),data) 函数对作为其参数的函数function()是有要求的,要求这个函数function()能接受两个参数。第一个参数的值是前期计算积累的值,而第二个参数的值是 reduce() 函数参数中的data序列的下一个元素。其实 reduce 函数中还有第三个可选的参数初始值,如果这个参数为空则初始值默认为序列的第一个元素,所以上面可以看到第一次调用这个函数是以序列的第一个和第二个元素作为参数的。最终,最后一次调用返回的值作为 reduce 函数的返回值。

												

Python中特殊函数和表达式lambda,filter,map,reduce的更多相关文章

  1. lambda,filter,map,reduce

    # lambda,filter,map,reduce from functools import reduce print('返回一个迭代器') print((x) for x in range(5) ...

  2. Python学习(五)函数 —— 内置函数 lambda filter map reduce

    Python 内置函数 lambda.filter.map.reduce Python 内置了一些比较特殊且实用的函数,使用这些能使你的代码简洁而易读. 下面对 Python 的 lambda.fil ...

  3. Python高级特性: 函数编程 lambda, filter,map,reduce

    一.概述 Python是一门多范式的编程语言,它同时支持过程式.面向对象和函数式的编程范式.因此,在Python中提供了很多符合 函数式编程 风格的特性和工具. 以下是对 Python中的函数式编程 ...

  4. python中的zip、lambda、map操作

    python 中有几个比较酷炫的操作,比如:zip.lambda.map 一.zip操作 zip字面意思:拉链.这么来记,把几个东西扔到一个包里,拉上拉链,就算打包好了.通俗点讲,就是把第1个参数.与 ...

  5. Python中特殊函数和表达式 filter,map,reduce,lambda

    1. filter 官方解释:filter(function or None, sequence) -> list, tuple, or string Return those items of ...

  6. [转]Python 中的 lambda,filter,map,reduce,apply

    1. lambda 1. 基本形式: 函数名=lambda args1,args2,...,argsn:expression与C语言中的宏定义类似 2. Code isodd = lambda x: ...

  7. Python基础灬高阶函数(lambda,filter,map,reduce,zip)

    高阶函数 lambda函数 关键字lambda表示匿名函数,当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. lambda函数省略函数名,冒号前为参数,冒号后函数体. # ...

  8. python 函数中的递归、lambda 、map reduce 等详解

    举例说明 #例1: ###递归函数求和 from traitlets.traitlets import Instance def mysum(L): print(L) if not L: return ...

  9. Python 函数lambda(), filter(), map(), reduce()

    1 filter filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String ...

随机推荐

  1. js高级-面向对象继承

    一.工厂模式创建对象及优缺点 继承就是把公共的部分抽象出来作为父类,基类.吃饭,跑步等 var a = {}; //批量创建不方便,不能重复设置公共属性的代码 //工厂模式出现了,创建10个Cat对象 ...

  2. metasploit framework(三):exploit模块

    exploit模块 分为主动,被动exploit 主动exploit:攻击者(通常是客户端)主动发起连接请求,然后发送exploit给被攻击者(通常是服务器端) 被动exploit:被攻击者(通常是客 ...

  3. django admin后台显示中文

    在settings中设置 LANGUAGE_CODE = ‘zh-Hans’

  4. 基于xtrabackup GDIT方式不锁库作主从同步(主主同步同理,反向及可)

    1.安装数据同步工具 注:xtrabackup 在数据恢复的时候比mysqldump要快很多,特别是大数据库的时候,但网络传输的内容要多,压缩需要占用时间. yum install https://w ...

  5. c++面向过程和面向对象-C++编译器是如何管理类和对象的

    1,c++编译时如何区分对象调用类的方法? C++中的class从面向对象理论出发,将变量(属性)和函数(方法)集中定义在一起,用于描述现实世界中的类.从计算机的角度,程序依然由数据段(栈区内存)和代 ...

  6. 基础DP(初级版)

    本文主要内容为基础DP,内容来源为<算法导论>,总结不易,转载请注明出处. 后续会更新出kuanbin关于基础DP的题目...... 动态规划: 动态规划用于子问题重叠的情况,即不同的子问 ...

  7. 190. Reverse Bits (Int; Bit)

    Reverse bits of a given 32 bits unsigned integer. For example, given input 43261596 (represented in ...

  8. HTTP 基础

    HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送 ...

  9. chrome谷歌浏览器常用快捷键搜集整理

    搜集了下面比较实用的快捷键,部分不好操作的组合键就不写了:Ctrl+N:打开新窗口. Ctrl+T:打开新标签页.Ctrl+W:关闭当前标签Alt+F4:关闭chrome浏览器Ctrl+Tab:切换到 ...

  10. vcenter或workstation12导入ovf出错:硬件系列vmx 14不受支持

    原因是因为导出ovf的虚拟机版本太高. 两个方法,一个强制,一个推荐. 强制 1. 打开ovf后缀文件,把<vssd:VirtualSystemType>vmx-14</vssd:V ...