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中使用copy模块实现列表(list)拷贝
Apr 14 Python
轻松实现TensorFlow微信跳一跳的AI
Jan 05 Python
图解Python变量与赋值
Apr 03 Python
selenium+python截图不成功的解决方法
Jan 30 Python
python利用跳板机ssh远程连接redis的方法
Feb 19 Python
python获取磁盘号下盘符步骤详解
Jun 19 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
Aug 06 Python
python程序中的线程操作 concurrent模块使用详解
Sep 23 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
Jul 28 Python
使用Pytorch搭建模型的步骤
Nov 16 Python
Python采集爬取京东商品信息和评论并存入MySQL
Apr 12 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清理缓存的方法
2016/01/06 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
表单提交前触发函数返回true表单才会提交
2014/03/11 Javascript
JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
2014/08/16 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
javascript中clone对象详解
2014/12/03 Javascript
实例讲解jQuery中对事件的命名空间的运用
2016/05/24 Javascript
详解Javascript数据类型的转换规则
2016/12/12 Javascript
AngularJS实现表单验证功能详解
2017/10/12 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
Vuex入门到上手教程
2018/06/20 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
2018/08/14 Javascript
基于JavaScript实现每日签到打卡轨迹功能
2018/11/29 Javascript
Vuejs中的watch实例详解(监听者)
2020/01/05 Javascript
[01:03:51]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第三场
2018/04/09 DOTA
[01:28]一分钟告诉你DOTA2 TI9不朽宝藏Ⅱ中有什么!
2019/07/09 DOTA
python实现html转ubb代码(html2ubb)
2014/07/03 Python
详解Django缓存处理中Vary头部的使用
2015/07/24 Python
Python中集合的内建函数和内建方法学习教程
2015/08/19 Python
利用 python 对目录下的文件进行过滤删除
2017/12/27 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
Python3实现定时任务的四种方式
2019/06/03 Python
Python代理IP爬虫的新手使用教程
2019/09/05 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
解决python调用自己文件函数/执行函数找不到包问题
2020/06/01 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
2020/10/31 Python
一款基于css3的动画按钮代码教程
2014/11/23 HTML / CSS
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
如何查找和删除数据库中的重复数据
2014/11/05 面试题
2014年节能降耗工作总结
2014/12/11 职场文书
会议通知范文
2015/04/15 职场文书
倡议书范文大全
2015/04/28 职场文书
工会经费申请报告
2015/05/15 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书
小喇叭开始广播了! 四十多年前珍贵老照片
2022/05/09 无线电