Python中特殊函数和表达式lambda,filter,map,reduce
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的更多相关文章
- lambda,filter,map,reduce
		# lambda,filter,map,reduce from functools import reduce print('返回一个迭代器') print((x) for x in range(5) ... 
- Python学习(五)函数 —— 内置函数 lambda filter map reduce
		Python 内置函数 lambda.filter.map.reduce Python 内置了一些比较特殊且实用的函数,使用这些能使你的代码简洁而易读. 下面对 Python 的 lambda.fil ... 
- Python高级特性: 函数编程 lambda, filter,map,reduce
		一.概述 Python是一门多范式的编程语言,它同时支持过程式.面向对象和函数式的编程范式.因此,在Python中提供了很多符合 函数式编程 风格的特性和工具. 以下是对 Python中的函数式编程 ... 
- python中的zip、lambda、map操作
		python 中有几个比较酷炫的操作,比如:zip.lambda.map 一.zip操作 zip字面意思:拉链.这么来记,把几个东西扔到一个包里,拉上拉链,就算打包好了.通俗点讲,就是把第1个参数.与 ... 
- Python中特殊函数和表达式 filter,map,reduce,lambda
		1. filter 官方解释:filter(function or None, sequence) -> list, tuple, or string Return those items of ... 
- [转]Python 中的 lambda,filter,map,reduce,apply
		1. lambda 1. 基本形式: 函数名=lambda args1,args2,...,argsn:expression与C语言中的宏定义类似 2. Code isodd = lambda x: ... 
- Python基础灬高阶函数(lambda,filter,map,reduce,zip)
		高阶函数 lambda函数 关键字lambda表示匿名函数,当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. lambda函数省略函数名,冒号前为参数,冒号后函数体. # ... 
- python 函数中的递归、lambda 、map reduce 等详解
		举例说明 #例1: ###递归函数求和 from traitlets.traitlets import Instance def mysum(L): print(L) if not L: return ... 
- Python 函数lambda(), filter(), map(), reduce()
		1 filter filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String ... 
随机推荐
- 寒假生活第一天——Github初体验
			快开学了,今天体验了一下github这个对我来说很是神秘的东西 它的定义来源于百度百科,如有异议,那就有吧.//gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格 ... 
- 使用idea+gradle建立SSM项目
			目录: 一.创建一个gradle项目 二 .在gradle中创建SSM项目 一 .创建一个gradle项目 第一步: 打开我们的IDEA工具,选择创建一个新项目 第二步:这里会让你选择创建一个什么 ... 
- jdbc连接模拟用户登陆密码判断
			package com.aaa.demo1; import com.aaa.utils.JdbcUtils; import java.sql.Connection; import java.sql.P ... 
- metasploit framework(五):meterpreter基本命令和python扩展
			基于内存的DLL注入式payload 注入合法的系统进程并建立stager 基于stager上传和预加载DLL进行扩展模块的注入(客户端API) 基于stager建立的socket连接建立加密的TLS ... 
- [疯狂Java]JDBC:PreparedStatement预编译执行SQL语句
			1. SQL语句的执行过程——Statement直接执行的弊病: 1) SQL语句和编程语言一样,仅仅就会普通的文本字符串,首先数据库引擎无法识别这种文本字符串,而底层的CPU更不理解这些文本字符串( ... 
- 以字符串形式获取excel单元格中的内容
			public static String getCellValue(XSSFCell cell) { if (cell == null) { return ""; } switch ... 
- centos7安装zabbix3.5
			安装centos7 自带MariaDB数据库(或者安装mysql) yum -y install mariadb-server mariadb-devel systemctlstartmariadb. ... 
- 聚合查询、分组查询、F&Q查询
			一.聚合查询和分组查询 1.aggregate(*args, **kwargs): 通过对QuerySet进行计算,返回一个聚合值的字典.aggregate()中每个参数都指定一个包含在字典中的返回值 ... 
- JS 解决json字符串转换成json树形输出
			问题: 后台获取一个字符串,格式为 string +jsonList+string+..... 就是传过来一堆数据,然后其中包含了一个json格式的list, 我们希望能将它输出成树形结构显示,能够 ... 
- Shell教程 之test命令
			Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值.字符和文件三个方面的测试. 1.数字测试 参数 说明 -eq 等于则为真 -ne 不等于则为真 -gt 大于则为真 -ge 大于 ... 
