python数据操作之lambda表达式详情

目录
  • 1 前言
  • 2 lambda 的特性
  • 3 lambda 的一些用法
    • 3.1 map 函数
    • 3.2 reduce 函数
    • 3.3 sorted 函数
    • 3.4 filter 函数
  • 4 总结

1 前言

在 Java 和 js 中,lambda箭头函数是十分常见的操作,这种表达方式在使用时非常的简便。在python的语法中也有应用场景,lambdapython预留的关键字,带有该关键字的都视为lambda,

其表现形式如下:

# lambda 是表达式, arg 是用户输入参数 expression 是函数表达式
lambda [arg1 [,arg2,.....argn]]:expression

2 lambda 的特性

python 中 lambda 表达式的特性如下所示:

  • 表达式是匿名的,lambda 只是一个一个表达式,类似于但是没有名字。
  • 表达式有输入和输出,输入是 arg 的参数,输出是表达式计算的结果。
  • 具有命名空间,只能在命名空间之内获取和操作参数变量。

常见的表达式如下所示:

lambda x, y: x + y			# 函数输入是x和y,输出是 x + y
lambda *args: sum(args)		# 输入是任意个数参数,输出是多个参数的和,输入参数必须是数字
lambda **kwargs: 2			# 输入是任意键值对参数,输出结果为固定值

3 lambda 的一些用法

3.1 map 函数

map 函数会根据提供的函数对可迭代参数进行逐个调用,并返回一个可迭代对象结果,其语法和使用方式如下所示:

# function 代表为函数,iterable 代表一个可迭代对象,也可以传入多个对象
map(function, iterable, ...)
# 只有一个可迭代参数情况
def cal_num(x):
    return x ** 2 + 2 * x - 3
# 准备的数据
read_list = [2, 3, 4]
# 因为map 的结果是一个可迭代对象,所以转换为 list 对象打印结果
re_list = list(map(cal_num, read_list))
#计算的结果 [5, 12, 21]
print(re_list)

# 多个可迭代参数情况,逐个计算和
def cal_add_num(x, y):
    return x  + y
# 准备的数据
read_list = [2, 3, 4]
re_list = list(map(cal_add_num, read_list, read_list))
# 计算结果 [4, 6, 8]
print(re_list)

# 关于多个迭代的操作,也可以采用 zip 将多个可迭代对象进行处理,组成元组对象,进行循环计算处理。
result_list = []
for k1, k2 in zip(read_list,read_list):
    result_list.append(k1 + k2)

3.2 reduce 函数

reduce 函数会对参数列表中的元素进行累积计算,通常的做法就是对一列数组求和,前篇讲述的 java Stream 关于 reduce 的操作和本例是一样的,其中的 lambda 可以看成是数列的推导式:

# function 代表为函数,iterable 代表一个可迭代对象,initializer 指定起始值
reduce(function, iterable[, initializer])
# 计算数组之和,lambda 写法,起始值为 10, 计算结果为 25
res = reduce(lambda x, y: x + y, [1, 2, 3, 4, 5], 10)

这里需要说明的是,在 python3 中 reduce 已经从全局命名空间中移除,被放在了 functools 模块中,如果需要使用,则需要进行引入from functools import reduce

3.3 sorted 函数

sorted 函数,顾名思义就是对可迭代对象进行排序操作,其语法格式和用法如下所示:

# iterable 为可迭代对象 cmp 为比较函数 排序字段和排序顺序
sorted(iterable[, cmp[, key[, reverse]]])
# 1、简单排序
a = [5,7,6,3,4,1,2]
# 使用sorted,保留原列表,不改变列表a的值
# 排序结果为 [1, 2, 3, 4, 5, 6, 7]
b = sorted(a)
# 2、使用 lambda 指定排序函数方式排序
# 待排序对象
x_list = [('b',2),('a',1),('c',3),('d',4)]
# 排序结果:[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
y_list = sorted(x_list, cmp=lambda x,y:cmp(x[1],y[1]))
# 3、利用参数 key 排序,依然使用 lambda 指定元祖的第一个数据
# 计算结果:[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
z_list = sorted(x_list, key=lambda x:x[1])
# 4、指定排序顺序
user_list = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
# 排序结果 [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
re_list = sorted(user_list, key=lambda s: s[2], reverse=True)

3.4 filter 函数

filter 函数相对来说就比较简单了,主要就是过滤操作,过滤掉不符合表达式的数据,得到最终的结果。

# function 为过滤函数,返回结果为 true 或者 false, iterable 为可迭代对象
filter(function, iterable)
# 判断是否为奇数
def is_odd(n):
	return n % 2 == 1
newlist = filter(is_odd, [1, 2, 3, 4])
print(list(newlist))

4 总结

文章主要讲述了 python 的 lambda 的相关操作,主要就是 lambda 表达式与 map、filter、 sorted、 reduce 函数的配合使用。

到此这篇关于python数据操作之 lambda表达式详情的文章就介绍到这了,更多相关python lambda表达式内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python3 lambda表达式详解

    技术背景 lambda表达式本身是一个非常基础的python函数语法,其基本功能跟使用def所定义的python函数是一样的,只是lambda表达式基本在一行以内就完整的表达了整个函数的运算逻辑.这里我们简单展示一些lambda表达式的使用示例,以供参考. 二元求和 首先我们尝试一个最简单的二元求和的ipython案例,输入两个参数x和y,返回这两个元素的和: [dechin@dechin-manjaro 2021-python]$ ipython Python 3.8.5 (default,

  • Python的条件表达式和lambda表达式实例

    条件表达式 条件表达式也称为三元表达式,表达式的形式:x if C else y.流程是:如果C为真,那么执行x,否则执行y. 经过测试x,y,C可以是函数,表达式,常量等等: def put(): print('this is put()') def get(): print('this is get()') def post(): return 0 method = put if post() else get method() lambda表达式 lambda [arguments] :

  • Python使用lambda表达式对字典排序操作示例

    本文实例讲述了Python使用lambda表达式对字典排序操作.分享给大家供大家参考,具体如下: lambda表达式也常用于字典排序,既然写到字典排序,那就把按键排序和按值排序都写写好了. 字典按键排序 显然按键排序,需要用字典中每个元素的第一项排序 dict = {'a':1,'b':2,'c':3,'d':4,'e':3,'f':1,'g':7} sorted_dict_asc = sorted(dict.items(),key=lambda item:item[0]) sorted_dic

  • Python lambda表达式原理及用法解析

    开篇先明义:lambda是表达式,而def函数是语句代码块 所以lambda其实就是一个稍微高级一点的式子而已,只不过这个式子比较长,而且还会自己进行一些逻辑上的处理而已,心里不要虚 lambda也被叫做匿名函数,通俗点说就是一个没有名字的函数,那可不就是一个函数式子吗?在python的垃圾回收机制来看,如果一些内存空间没有引用指向,那这些内存空间就被回收掉,所以这个连名字都没有的匿名函数,肯定是用过即销的. 综上所述,我们可以很容易的得出lambda表达式的特点: 1.用一个表达式就能实现简单

  • python lambda表达式在sort函数中的使用详解

    1.lambda表达式一般用法 语法: lamda argument:expression example: add = lambda x, y: x+y print(add(10, 20))<br data-filtered="filtered">>>> 30 2.lambda表达式在sort函数中的使用 假如a是一个由元组构成的列表,对该列表进行排序时,我们需要用到参数key,也就是关键词,如下面代码所示,lambda是一个匿名函数,是固定写法:x表示

  • python lambda 表达式形式分析

    目录 lambda表达式格式 匿名的用法 前言: 在日常开发的过程中,有时候会临时用到一些简单的函数,她们的业务逻辑会相对简单,简单到并不值得让他们留下名字,这个时候,就很值得使用匿名函数 lambda函数来完成这个需求. lambda表达式格式 lambda arguments : statement 表达式以​​ lambda​​关键字开头,冒号 ":" 左侧是函数的传入参数,当有多个入参时使用逗号划分开,冒号右侧是返回值的表达式语句,函数会根据表达式计算结果并将其返回.​​lam

  • Python三元运算与lambda表达式实例解析

    这篇文章主要介绍了Python三元运算与lambda表达式实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 三元运算是if...else...的简化版,lambda表达式是函数的简化版 三元运算(三目运算) # 判断两个数中的较大者 fun(a1,a2): return a1 if a1>a2 else a2 v = fun(5,2) print (v) # v = 5 lambda运算(一行运算符) #规范 lambda 参数1,参数2

  • python中Lambda表达式详解

    如果你在学校读的是计算机科学专业,那么可能学过 Lambda 表达式, 不过可能从来没有用过它.如果你不是计算机科学专业,它们看着可能 有点儿陌生(或者只是"曾经学习过的东西").在这一节里,虽然我们 不打算深入学习这类函数,但是会用几个例子来演示它们是如何用在网 页抓取中的. Lambda 表达式本质上就是一个函数,可以作为变量传入另一个函数: 也就是说,一个函数不是定义成 f(x, y),而是可以定义成 f(g(x), y) 或 f(g(x), h(y)) 的形式. Beautif

  • python数据操作之lambda表达式详情

    目录 1 前言 2 lambda 的特性 3 lambda 的一些用法 3.1 map 函数 3.2 reduce 函数 3.3 sorted 函数 3.4 filter 函数 4 总结 1 前言 在 Java 和 js 中,lambda箭头函数是十分常见的操作,这种表达方式在使用时非常的简便.在python的语法中也有应用场景,lambda是python预留的关键字,带有该关键字的都视为lambda, 其表现形式如下: # lambda 是表达式, arg 是用户输入参数 expression

  • Python中defaultdict与lambda表达式用法实例小结

    本文实例讲述了Python中defaultdict与lambda表达式用法.分享给大家供大家参考,具体如下: 从教程中看到defaultdict是一个类,在一台装有Python2.7.6的电脑上使用发现不存在.在文档中搜索了一下也没有找到,想当然以为这或许是Python 3.X专有的.因为教程就是基于Python 3.X实现的.后来换了一台装有Python 3.X的电脑依然出问题. 求助于网络,发现这个类其实是collections模块中的一个类.看来,学习很难摆脱网络环境啊! 这个类是dict

  • Python学习笔记之lambda表达式用法详解

    本文实例讲述了Python学习笔记之lambda表达式用法.分享给大家供大家参考,具体如下: Lambda 表达式 使用 Lambda 表达式创建匿名函数,即没有名称的函数.lambda 表达式非常适合快速创建在代码中以后不会用到的函数. 麻烦的写法: def multiply(x, y): return x * y 使用Lambda之后: double = lambda x, y: x * y Lambda 函数的组成部分: 关键字 lambda 表示这是一个 lambda 表达式. lamb

  • python基础教程之lambda表达式使用方法

    Python中,如果函数体是一个单独的return expression语句,开发者可以选择使用特殊的lambda表达式形式替换该函数: 复制代码 代码如下: lambda parameters: expression lambda表达式相当于函数体为单个return语句的普通函数的匿名函数.请注意,lambda语法并没有使用return关键字.开发者可以在任何可以使用函数引用的位置使用lambda表达式.在开发者想要使用一个简单函数作为参数或者返回值时,使用lambda表达式是很方便的.下面是

  • 简单谈谈python中的lambda表达式

    最近在coding时发现使用lambda还是有诸多优点的,很多时候代码更整洁,更pythonic,所以在此简单总结一下 1.lambda是什么 举个简单的例子: func = lambda x: x*x def func(x): return x*x 两个func的定义是完全相同的,那两种函数定义方法配合map使用,将list中所有元素求平方,代码会是什么样的, def func(x): return x*x map(func, [i for i in range(10)]) map(lambd

  • 深入浅析JDK8新特性之Lambda表达式

    第一次是接触Lambda表达式是在TypeScript中(JavaScript的超集中),当时是为了让TypeScript的this方法外而不是本方法内所使用的.使用过后突然想到Lambda不是JDK8的重量级新特性么?于是感觉查阅相关资料并记录下来: 一. 行为参数化 行为参数化简单的说就是函数的主体仅包含模板类通用代码,而一些会随着业务场景而变化的逻辑则以参数的形式传递到函数之中,采用行为参数化可以让程序更加的通用,以应对频繁变更的需求. 考虑一个业务场景,假设我们需要通过程序对苹果进行筛选

  • python中的lambda表达式用法详解

    本文实例讲述了python中的lambda表达式用法.分享给大家供大家参考,具体如下: 这里来为大家介绍一下lambda函数. lambda 函数是一种快速定义单行的最小函数,是从 Lisp 借用来的,可以用在任何需要函数的地方 .下面的例子比较了传统的函数定义def与lambda定义方式: >>> def f ( x ,y): ... return x * y ... >>> f ( 2,3 ) 6 >>> g = lambda x ,y: x *

  • Python lambda表达式filter、map、reduce函数用法解析

    前言 lambda是表达式,用于创建匿名函数,可以和filter.map.reduce配合使用. 本文环境Python3.7. 一.lambda表达式 lambda 只包含一个语句,用于创建匿名函数. 语法: lambda [arg1 [,arg2,.....argn]]:expression arg1 -- 参数,可以有多个 expression -- 表达式 使用例子: f1 = lambda x : x > 10 print(f1(1)) #输出:False print(f1(11)) #

随机推荐