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 ...
随机推荐
- JAVA回文
package huiwen; import java.util.Scanner; public class Huiwen { public static void main(String[] arg ...
- linux内核配置 kbuild
Linux 内核配置机制 http://blog.csdn.net/dianhuiren/article/details/6917132 linux kbuild文档 http://blog.chin ...
- 搭建GitLab+Jenkins
1. Jenkins and GitLab Jenkins是一个自动化服务器,可以运行各种自动化构建.测试或部署任务. GitLab是一个代码仓库,用来管理代码. 两者结合起来,就可以实现开发者提交代 ...
- git gitlab 使用 提交代码解决冲突
1.更改完代码后,git push 发生错误 注: 此时,使用 git pull: 更新代码,git 会自动merge不同的更新, a. 如果git 自动merge成功,再进行 git push操作 ...
- apache启动报错(98)Address already in use: make_sock: could not bind to address [::]:80
说明80端口被用 终端: ps -ef|grep httpd察看占用的进程或者用netstat -lnp|grep 80 找到后kill掉,如果都不行那么再试试以下方法(试过可以) 终端输入: fi ...
- 为什么要用MarkDown?
[为什么要用MarkDown?] 大部分作家用 Word 或 Pages 写作,过去的文档也大都以 .doc, .docx 格式或是 Pages 格式储存.还有人为了保证文稿发给谁都能正常打开,会用 ...
- harbor在centos7.4下面配置自签名证书(域名是端口映射)
1.harbor安装,按常规安装. 注意事项,端口映射 端口要外网的与内网一至. 配置文件修改 vim docker-compose.yml proxy: image: vmware/nginx-ph ...
- Nginx高级应用之Location Url
基本配置 为了探究nginx的url配置规则,当然需要安装nginx.我使用了vagrant创建了一个虚拟环境的Ubuntu,通过apt-get安装nginx.这样就不会污染mac的软件环境.通过vr ...
- python 自动补全
一.查看python 环境变量 >>> import sys>>> sys.path 编写 tab.py import sys import atexit impo ...
- Python3 round() 函数
Python3 round() 函数 Python3 数字 描述 round() 方法返回浮点数x的四舍五入值. 语法 以下是 round() 方法的语法: round( x [, n] ) 参数 ...