Python基础:lambda 匿名函数
格式
lambda argument1, argument2,... argumentN : expression square = lambda x: x**2
print(square(2))
与常规函数区别
l = [(lambda x:x**2) (x) for x in range(10)]
print(list(l))
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
l = [(1, 20), (3, 0), (9, 10), (2, -1)]
l.sort(key=lambda x: x[1]) # 按列表中元祖的第二个元素排序
print(l)
输出
[(2, -1), (3, 0), (9, 10), (1, 20)]
使用lambda可以简化代码
squared = map(lambda x: x**2, [1, 2, 3, 4, 5])
print(list(squared))
上面那段代码,如果不用lambda表达式而用常规函数:
def squared2(x):
return x[1] if isinstance(x,tuple) else x**2 squared = map(squared2, [1, 2, 3, 4, 5,(1,3)])
print(list(squared))
Python函数式编程
Python函数式编程有三个基本函数 map()、reduce()、filter()
map(function, iterable [,iterable2])
map遍历可迭代对象取出元素,作为参数依次传给function函数,例:每个元素都变大2倍
l = [1, 2, 3, 4, 5]
new_list = map(lambda x: x * 2, l) # [2, 4, 6, 8, 10]
filter(function, iterable)
filter与map一样,遍历可迭代对象,并依次传给function,不同的是,filter会判断每次function的结果是True或False,并将结果为True的元素组成列表返回
例:返回一个列表中的所有偶数
l = [1, 2, 3, 4, 5]
new_list = filter(lambda x: x % 2 == 0, l) # [2, 4]
reduce(function, iterable[, initializer])
其中function 是一个函数对象,规定它有两个参数,表示对 iterable 中的每个元素以及上一次调用后的结果,运用 function 进行计算,所以最后返回的是一个单独的数值。
配合reduce源码理解:
def reduce(function, iterable, initializer=None):
it = iter(iterable)
if initializer is None:
try:
initializer = next(it)
except StopIteration:
raise TypeError('reduce() of empty sequence with no initial value')
accum_value = initializer
for x in it:
accum_value = function(accum_value, x)
return accum_value
例 累加列表中的元素
from functools import reduce
l = [1,2,3,4,5]
result = reduce(lambda x,y:x+y, l )
print(result) #
result = reduce(lambda x,y:x+y, l,10 )
print(result) #
思考题
把字典 d = {'mike': 10, 'lucy': 2, 'ben': 30} 按值从高到低排序
d = {'mike': 10, 'lucy': 2, 'ben': 30}
d = sorted(d.items(), key=lambda x: x[1],reverse = True ) #[('ben', 30), ('mike', 10), ('lucy', 2)]
d = dict(d)
print(d)
参考:
极客时间《Python核心技术与实战》
Python基础:lambda 匿名函数的更多相关文章
- Python的lambda匿名函数
lambda函数也叫匿名函数,即,函数没有具体的名称.先来看一个最简单例子: def f(x):return x**2print f(4) Python中使用lambda的话,写成这样 g = lam ...
- python 基础篇 匿名函数
匿名函数基础 首先,什么是匿名函数呢?以下是匿名函数的格式: lambda argument1, argument2,... argumentN : expression 我们可以看到,匿名函数的关键 ...
- python基础(10)-匿名函数&内置函数
匿名函数 例子 返回两个数的和 def add(x, y): return x + y # 等价于 add = lambda x, y: x + y 返回字典中值最大的key dic = {'a': ...
- python基础10 ---匿名函数和递归
一.匿名函数 1.lambda表达式就相当于匿名函数,其格式为: lambda 参数列表:参数表达式 2.lambda自带return值,因为匿名函数有个限制,就是只能有一个表达式,不用写return ...
- Python 基础之匿名函数 迭代器和高阶函数
一.匿名函数 lambda表达式 用一句话来表达只有返回值的函数,叫匿名函数特点:简洁方便语法:lambda 参数: 返回值 1.不带有参数的lambda表达式 def func(): retu ...
- Python之lambda匿名函数使用if条件语句
C0LOR1 = "PapayaWhip" COLOR2 = "Tan" selectColor = lambda num: C0LOR1 if num % 2 ...
- python中lambda匿名函数与函数之间的关系
- Python 之父为什么嫌弃 lambda 匿名函数?
Python 支持 lambda 匿名函数,其扩展的 BNF 表示法是lambda_expr ::= "lambda" [parameter_list] ":" ...
- python基础----内置函数----匿名函数(lambda)
Python3版本所有的内置函数: 1. abs() 获取绝对值 >>> abs(-) >>> abs() >>> abs() >>& ...
随机推荐
- NuGet 下载dll
PM> Install-Package DotNetCore.CAP PM> Install-Package xxxdll
- akka框架——异步非阻塞高并发处理框架
akka actor, akka cluster akka是一系列框架,包括akka-actor, akka-remote, akka-cluster, akka-stream等,分别具有高并发处理模 ...
- 安卓使用ImageView显示OpenCV-Mat
Android 的Application-native调试暂时还只能进行主线程调试,在GDB里面,运行于子线程的OpenCv数据处理过程不能直接调试,OPenCV-Native函数 public ...
- C# 带Cookies发送请求
#region --来自黄聪 void F1() { #region --创建cookies容器 添加Cookies和对应的URl(Hots主) CookieContainer cc = new Co ...
- day37-2元类,单例模式
目录 元类 造类的第一种形式 class做了什么事 控制元类产生的类 控制元类产生的对象 实例化类 加上元类后类的属性查找顺序 元类控制模版 单例模式 1. 使用类方法的特性 2. 使用装饰器 3. ...
- freemarker使用map替换字符串中的值
package demo01; import java.io.IOException;import java.io.OutputStreamWriter;import java.io.StringRe ...
- 本地远程访问服务器jupyter
一.前提: 安装Python3 安装Anaconda 配置jupyter notebook 并启动(重点) 二.配置jupyter文件 因为服务器已经安装好anaconda和jupyter,pytho ...
- eas之日期选择控件
初始化打印控件KDPrinter ctrlPrinter = new KDPrinter(); 增加列 // 指定插入位置table.addColumn(index);// 插入到最后table.ad ...
- 【剑指Offer】10、矩形覆盖
题目描述: 我们可以用2 X 1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2 X 1的小矩形无重叠地覆盖一个2 X n的大矩形,总共有多少种方法? 解题思路: 我们可以以2 X ...
- 洛谷P1996 约瑟夫问题【队列】
题目背景 约瑟夫是一个无聊的人!!! 题目描述 n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,--依次类推,直到所有的人都出 ...