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


Posted in Python onAugust 28, 2019

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表示匿名函数的输入,即列表中的一个元素,在这里,表示一个元组,x只是临时起的一个名字,你可以使用任意的名字;x[0]表示匿名函数的输出,即元组里的第一个元素,即key = x[0];所以这句命令的意思就是按照列表中第一个元素进行排序。

a = [('b', 4), ('a', 12), ('d', 7), ('h', 6), ('j', 3)]
a.sort(key=lambda x: x[0])
print(a)<br data-filtered="filtered">>>>[('a', 12), ('b', 4), ('d', 7), ('h', 6), ('j', 3)]

3.举例,leetcode中的一道题

937.重新排列日志

你有一个日志数组 logs。每条日志都是以空格分隔的字串。

对于每条日志,其第一个字为字母数字标识符。然后,要么:

标识符后面的每个字将仅由小写字母组成,或;

标识符后面的每个字将仅由数字组成。

我们将这两种日志分别称为字母日志和数字日志。保证每个日志在其标识符后面至少有一个字。

将日志重新排序,使得所有字母日志都排在数字日志之前。字母日志按内容字母顺序排序,忽略标识符;在内容相同时,按标识符排序。数字日志应该按原来的顺序排列。

返回日志的最终顺序。

示例 :

输入:["a1 9 2 3 1","g1 act car","zo4 4 7","ab1 off key dog","a8 act zoo"]

输出:["g1 act car","a8 act zoo","ab1 off key dog","a1 9 2 3 1","zo4 4 7"]

思路:先将日志数组logs分成两个日志数组,一个存储字母日志,一个存储数字日志,根据题意,需将所有字母日志排在数字日志前面,字母日志按内容字母排序,故仅需对字母日志数组排序,最后返回两个数组想家的结果就OK了。

代码如下:

class Solution(object):
  def reorderLogFiles(self, logs):
    """
    :type logs: List[str]
    :rtype: List[str]
    """
    l1=[]
    l2=[]
    for l in logs:
      if l[-1].isalpha():
        l1.append(l)
      else:
        l2.append(l)
    l1.sort(key=lambda x:(x[x.index(' ')+1:],x[:x.index(' ')]))
    return l1+l2

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现抓取HTML网页并以PDF文件形式保存的方法
May 08 Python
python实现ID3决策树算法
Aug 29 Python
Python3 jupyter notebook 服务器搭建过程
Nov 30 Python
基于Python对数据shape的常见操作详解
Dec 25 Python
Python字典的核心底层原理讲解
Jan 24 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
Aug 19 Python
python实现上传文件到linux指定目录的方法
Jan 03 Python
浅析python表达式4+0.5值的数据类型
Feb 26 Python
python入门:argparse浅析 nargs='+'作用
Jul 12 Python
详解Django中views数据查询使用locals()函数进行优化
Aug 24 Python
python实现数学模型(插值、拟合和微分方程)
Nov 13 Python
Matlab求解数组中的最大值及它所在的具体位置
Apr 16 Python
python实现微信小程序用户登录、模板推送
Aug 28 #Python
使用Python脚本zabbix自定义key监控oracle连接状态
Aug 28 #Python
django删除表重建的实现方法
Aug 28 #Python
Python Django 前后端分离 API的方法
Aug 28 #Python
django重新生成数据库中的某张表方法
Aug 28 #Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
Aug 28 #Python
关于Python核心框架tornado的异步协程的2种方法详解
Aug 28 #Python
You might like
Yii PHP Framework实用入门教程(详细介绍)
2013/06/18 PHP
PHP实现根据浏览器跳转不同语言页面代码
2013/08/02 PHP
利用php下载xls文件(自己动手写的)
2014/04/18 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
php模仿asp Application对象在线人数统计实现方法
2015/01/04 PHP
Laravel框架中实现使用阿里云ACE缓存服务
2015/02/10 PHP
php检测apache mod_rewrite模块是否安装的方法
2015/03/14 PHP
简介PHP的Yii框架中缓存的一些高级用法
2016/03/29 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
2017/03/09 PHP
PHP多维数组排序array详解
2017/11/21 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
详解phpstorm2020最新破解方法
2020/09/17 PHP
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
JS鼠标事件大全 推荐收藏
2011/11/01 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
js定时器的使用(实例讲解)
2014/01/06 Javascript
自己封装的javascript事件队列函数版
2014/06/12 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
2015/01/07 Javascript
深入理解选择框脚本[推荐]
2016/12/13 Javascript
你可能不知道的JSON.stringify()详解
2017/08/17 Javascript
Vue $emit $refs子父组件间方法的调用实例
2018/09/12 Javascript
js实现消灭星星(web简易版)
2020/03/24 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
详解Python操作RabbitMQ服务器消息队列的远程结果返回
2016/06/30 Python
Python实现在线音乐播放器
2017/03/03 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
2018/10/14 Python
在Python中定义一个常量的方法
2018/11/10 Python
python实现点击按钮修改数据的方法
2019/07/17 Python
html5实现移动端适配完美写法
2017/11/16 HTML / CSS
Kathmandu澳洲户外商店:新西兰户外运动品牌
2017/11/12 全球购物
十岁生日家长答谢词
2014/01/17 职场文书
春风行动实施方案
2014/03/28 职场文书
人事主管岗位职责
2015/02/04 职场文书
社区党员干部承诺书
2015/05/04 职场文书
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers