当前位置: 首页 > news >正文

学会Lambda,让程序Pythonic一点

Lambda是Python里的高阶用法,要把代码写得Pythonic,就需要了解这些高阶用法,想说自己是一名真正的Python程序员,先要把代码写得Pythonic。

今天聊下Lambda的用法,写篇简短的用法说明。

Lambda是匿名函数的意思,在程序中有些简单的函数我们可能只会使用一两次,这种情况下,你不必把它写成一个函数,而是用Lambda的写法,来让程序更简洁。

Lambda的写法原型是:

lambda 参数:操作(参数)

冒号左边是传入的参数,冒号右边是使用参数要做的操作。

比如

lambda x:x+1

上面的写法等同于如下写法,给参数加1,再返回:

def plus(x):
return x+1

比如

lambda x,y:x*y

上面的写法等同于:

def mul(x,y):
retuen x*y

举几个实际的例子:

1、比如对list排序,如下简单的list
nums = [3, 1, 7, 4, 8, 10]
对nums按降序排列,这个很简单是吧:

>>>nums = [3, 1, 7, 4, 8, 10]>>>sorted(nums, reverse=True)>>>[10, 8, 7, 4, 3, 1]

如果是对嵌套list排序呢?
比如:nums = [[10, 20, 11], [3, 9, 6], [8, 14, 3]]
我们想按每个元素里的第二个值降序排列

直接用上面sorted的写法就没法排序,这个时候用lambda就很方便:

>>>nums = [[10, 20, 11], [3, 9, 6], [8, 14, 3]]
>>>sorted(nums, key=lambda x:x[1], reverse=True)
>>>[[10, 20, 11], [8, 14, 3], [3, 9, 6]]

这个嵌套列表就按没想元素的第二个值降序排列好了,这个lambda的意思是返回元素的第二个值,它的写法等同于如下:

>>>def lis(x):
>>> return x[1]
>>>sorted(nums, key=lis, reverse=True)
>>>[[10, 20, 11], [8, 14, 3], [3, 9, 6]]

比较一下,用lambda写代码要简介很多。

2.再比如按字典的value进行降序排序

nums = {'yuan':80, 'ren':93, 'xue':60}
nums = {'yuan':80, 'ren':93, 'xue':60}
sorted(nums, key=lambda x: nums[x], reverse=True)

3.比如想取列表里的值
nums = [‘1’, ‘100’, ‘111’, ‘2’, 2, 2.57]
但是列表里还有字符串,没法直接比较大小,怎么做,用lambda来处理。

>>>nums = ['1', '100', '111', '2', 2, 2.57]
>>>max(nums, key=lambda x:int(x))
>>>'111'

这个写法等同于

def trsn(x):
return int(x)
max(nums, key=trsn)

如果lambda结合map , filter 等高阶Python语法,还有更多的用法。

如上用lambda的好处是,让代码更简洁,这是程序员对代码的一种追求。坏处就是让程序不太容易看懂,不过只要你搞清楚了lambda的用法,也没那么难懂。

http://www.lryc.cn/news/490657.html

相关文章:

  • GDPU 信息安全 期末复习
  • Python 使用 Token 认证方案连接 Kubernetes (k8s) 的详细过程
  • 【C++】ReadFile概述,及实践使用时ReadFile的速率影响研究
  • Mysql的UPDATE(更新数据)详解
  • 基于Java Springboot高校奖助学金系统
  • 如何在 Ubuntu 22.04 上安装带有 Nginx 的 ELK Stack
  • Python爬虫:深入探索1688关键词接口获取之道
  • Let‘s Encrypt SSL证书:acmessl.cn申请免费3个月证书
  • JSON Web Token (JWT)的简单介绍、验证过程及令牌刷新思路
  • xxl-job入门
  • 100.【C语言】数据结构之二叉树的堆实现(顺序结构) 1
  • 大模型 VS 大语言模型
  • Linux高阶——1117—TCP客户端服务端
  • 【Qt】Qt 在main.cpp中使用tr()函数报错
  • 面向对象高级(5)接口
  • uniapp发布android上架应用商店权限
  • Centos Stream 9安装Jenkins-2.485 构建自动化项目步骤
  • 电路模型和电路定理(二)
  • 瑞佑液晶控制芯片RA6807系列介绍 (三)软件代码详解 Part.10(让PNG图片动起来)完结篇
  • Qt常用控件 按钮
  • MySQL学习/复习10视图/用户/权限/语言连接数据库
  • vulfocus在线靶场:tomcat-pass-getshell 弱口令 速通手册
  • c#:winform调用bartender实现打印(学习整理笔记)
  • 牛客题库 21738 牛牛与数组
  • 探索PDFMiner:Python中的PDF解析利器
  • 掌握Go语言中的异常控制:panic、recover和defer的深度解析
  • 云讷科技Kerloud无人飞车专利发布
  • 企业信息化-走进身份管理之搭建篇
  • 实践指南:EdgeOne与HAI的梦幻联动
  • Exploring Prompt Engineering: A Systematic Review with SWOT Analysis