Python中的lambda函数介绍
Lambda函数,即Lambda 表达式(lambda expression),是一个匿名函数(不存在函数名的函数),Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction)。
一、lambda函数也叫匿名函数,即,函数没有具体的名称。先来看一个最简单例子:
def
f(x):
return
x
*
*
2
print
f(
4
)
Python中使用lambda的话,写成这样
g
=
lambda
x : x
*
*
2
print
g(
4
)
二、lambda和普通的函数相比,就是省去了函数名称而已,同时这样的匿名函数,又不能共享在别的地方调用。
其实说的没错,lambda在Python这种动态的语言中确实没有起到什么惊天动地的作用,因为有很多别的方法能够代替lambda。
1. 使用Python写一些执行脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。
2. 对于一些抽象的,不会别的地方再复用的函数,有时候给函数起个名字也是个难题,使用lambda不需要考虑命名的问题。
3. 使用lambda在某些时候让代码更容易理解。
lambda基础
lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。lambda语句构建的其实是一个函数对象:
lambda函数一般遍历的时候是和三个函数一起嵌套使用map(),reduc()以及filter()函数
>>> foo
=
[
2
,
18
,
9
,
22
,
17
,
24
,
8
,
12
,
27
]
>>>
print
filter
(
lambda
x: x
%
3
=
=
0
, foo)
[
18
,
9
,
24
,
12
,
27
]

Python中的filter( )函数接受一个列表参数和一个lambda函数参数。
>>>
print
map
(
lambda
x: x
*
2
+
10
, foo)
[
14
,
46
,
28
,
54
,
44
,
58
,
26
,
34
,
64
]

传入map()函数的迭代器可以是字典,列表等。map()函数主要是根据lambda函数定义的逻辑来将输入迭代器中的每一项映射到输出迭代器中的相关项。
>>>
print
reduce
(
lambda
x, y: x
+
y, foo)
139

在对象遍历处理方面,其实Python的for..in..if语法已经很强大,并且在易读上胜过了lambda。
defaultdict是字典类型,可以为defaultdict设置默认值,可以通过lambda设置默认值。
下面举几个例子:
from
collections
import
*
x
=
defaultdict(
lambda
:
0
)
/
/
默认值是
0
print
x[
0
]
y
=
defaultdict(
lambda
:defaultdict(
lambda
:
0
))
/
/
默认值是一个字典,字典的默认值是
0
print
y[
0
]
z
=
defaultdict(
lambda
:[
0
,
0
,
0
])
/
/
默认值是一个列表,[
0
,
0
,
0
].
print
z[
0
]
输出结果:
0
defaultdict(<function <
lambda
> at0x7f097797af50>, {})
[
0
,
0
,
0
]
注意:在Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在放置在functools 模块里,如果想要使用它,则需要通过引入functools 模块来调用reduce() 函数
Python中的lambda函数介绍的更多相关文章
- python中multiprocessing.pool函数介绍_正在拉磨_新浪博客
python中multiprocessing.pool函数介绍_正在拉磨_新浪博客 python中multiprocessing.pool函数介绍 (2010-06-10 03:46:5 ...
- [转载]python中multiprocessing.pool函数介绍
原文地址:http://blog.sina.com.cn/s/blog_5fa432b40101kwpi.html 作者:龙峰 摘自:http://hi.baidu.com/xjtukanif/blo ...
- 【转】python中的lambda函数
http://www.cnblogs.com/coderzh/archive/2010/04/30/python-cookbook-lambda.html lambda函数也叫匿名函数,即,函数没有具 ...
- Python中关于Lambda函数的使用总结
lambda表达式是一种匿名函数,对应python中的自定义函数def,是定义某个函数时比较高级的一种写法.作为python初学者,本文整理了lambda的一些基本用法和特点. lambda和def的 ...
- Python中的lambda函数
今天在看书的时候,看到了这样的一条语句: if isinstance(value,int) or isinstance(value,float): split_function=lambda row: ...
- python中的lambda()函数
语句:print map(lambda x:x ** 2,[1,2,3,4,5]) 其中lambda()函数在Python文档,文档中解释如下: lambda An anonymous inline ...
- python中的lambda函数用法
例1:传入多个参数的lambda函数def sum(x,y): return x+y用lambda来实现:p = lambda x,y:x+yprint(4,6) 例2:传入一个参数的lambda函数 ...
- Python中的map()函数和reduce()函数的用法
Python中的map()函数和reduce()函数的用法 这篇文章主要介绍了Python中的map()函数和reduce()函数的用法,代码基于Python2.x版本,需要的朋友可以参考下 Py ...
- 在Python中使用lambda高效操作列表的教程
在Python中使用lambda高效操作列表的教程 这篇文章主要介绍了在Python中使用lambda高效操作列表的教程,结合了包括map.filter.reduce.sorted等函数,需要的朋友可 ...
随机推荐
- 洛谷 P5569 [SDOI2008]石子合并 GarsiaWachs算法
石子合并终极通用版 #include<bits/stdc++.h> using namespace std ; ]; int n,t,ans; void combine(int k) { ...
- 常见运算符_python
一.算数运算符a=2b=5c=8#加减乘除print(a+b,a-b,a*b,a/b)#取模,也就是余数print(b%a)#取整除print(b//a)#幂(次方)print(b**a) 二.比较运 ...
- 题解【洛谷P2863】 [USACO06JAN]牛的舞会The Cow Prom
题面 题解 \(Tarjan\)板子题. 统计出大小大于\(1\)的强连通分量数量输出即可. 代码 #include <iostream> #include <cstdio> ...
- Oracle 11G在用EXP 导入、导出时,若有空表对导入导出中遇到的问题的解决
11G中有个新特性,当表无数据时,不分配segment,以节省空间 解决方法: 1.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segmen ...
- c++对象的内存模式
#include <iostream> using namespace std; class Obj { private: int* a; public: int* ga() { retu ...
- 使用git上传项目解决码云文件次数上传限制(原文)
起因:个人免费版的码云上传文件时限制: 1个小时内只能上传20个文件 解决方法:在码云创建空的项目仓库,使用git客户端下载码云的项目,把需要上传的文件复制到该项目中去,用git提交! 1.配置git ...
- linux中history加入显示时间命令代码
source 空格 配置文件,则配置立即生效,这里的soruce也可以用英文状态下的点即“.”代替 历史命令history -w将现在的命令记录写入到history里面 如果在history里面加上时 ...
- 利用数据库管理工具(Navicat)导出数据到Excel表中
如果只是想把数据库表中数据简单导出来,可以利用数据库管理工具中的工具 1.先查询 2.在查询出结果中全选 3.导出向导 4.选择Excel 5.选择导出地址并命名
- 微信个人支付接口---YunGouOS 1.1.3 版本发布,新增个人微信/支付宝收款接口
软件接口 https://www.oschina.net/news/113305/yungouos-1-1-3-released 文档说明 https://www.oschina.net/p/Yu ...
- go基础_切片
切片创建方式 1.通过数组创建 2.通过内置函数make创建 切片允许的操作 1.追加元素 2.通过内置函数make创建 package main import "fmt" fun ...