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实现定制交互式命令行的方法
Jul 03 Python
使用C语言来扩展Python程序和Zope服务器的教程
Apr 14 Python
简单谈谈python中的语句和语法
Aug 10 Python
tensorflow入门之训练简单的神经网络方法
Feb 26 Python
Python爬取成语接龙类网站
Oct 19 Python
对python产生随机的二维数组实例详解
Dec 13 Python
使用OpenCV circle函数图像上画圆的示例代码
Dec 27 Python
详解Python3中的 input() 函数
Mar 18 Python
Django使用list对单个或者多个字段求values值实例
Mar 31 Python
在python中实现求输出1-3+5-7+9-......101的和
Apr 02 Python
python3 re返回形式总结
Nov 20 Python
python数字图像处理之图像自动阈值分割示例
Jun 28 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
php中的时间显示
2007/01/18 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
2015/05/13 PHP
php使用number_format函数截取小数的方法分析
2016/05/27 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
Javascript学习笔记2 函数
2010/01/11 Javascript
JavaScript 注册事件代码
2011/01/27 Javascript
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
JS注释所产生的bug 即使注释也会执行
2013/11/19 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
2016/12/02 Javascript
Javascript中构造函数要注意的一些坑
2017/01/23 Javascript
vue2.0中goods选购栏滚动算法的实现代码
2017/05/17 Javascript
让你5分钟掌握9个JavaScript小技巧
2018/06/09 Javascript
js实现烟花特效
2020/03/02 Javascript
React 条件渲染最佳实践小结(7种)
2020/09/27 Javascript
python list中append()与extend()用法分享
2013/03/24 Python
python删除列表内容
2015/08/04 Python
python中enumerate函数遍历元素用法分析
2016/03/11 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
基于python实现文件加密功能
2020/01/06 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
Linux Interview Questions For software testers
2013/05/17 面试题
《中国梦我的梦》小学生演讲稿
2014/08/20 职场文书
机关领导干部作风整顿整改措施
2014/09/19 职场文书
2014年个人工作总结模板
2014/12/15 职场文书
2014年学校禁毒工作总结
2014/12/23 职场文书
英文感谢信范文
2015/01/21 职场文书
医生个人年终总结
2015/02/28 职场文书
企业宣传语大全
2015/07/13 职场文书
如何用threejs实现实时多边形折射
2021/05/07 Javascript
解读MySQL的客户端和服务端协议
2021/05/10 MySQL
React Native项目框架搭建的一些心得体会
2021/05/28 Javascript
Python如何使用循环结构和分支结构
2022/04/13 Python
PostgreSQL之连接失败的问题及解决
2023/05/08 PostgreSQL