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中实现三目运算的方法
Jun 21 Python
python实现单线程多任务非阻塞TCP服务端
Jun 13 Python
Python中read()、readline()和readlines()三者间的区别和用法
Jul 30 Python
python Celery定时任务的示例
Mar 13 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
Dec 19 Python
python 设置输出图像的像素大小方法
Jul 04 Python
如何利用Python模拟GitHub登录详解
Jul 15 Python
Python3合并两个有序数组代码实例
Aug 11 Python
Window10上Tensorflow的安装(CPU和GPU版本)
Dec 15 Python
python中最小二乘法详细讲解
Feb 19 Python
python3读取文件指定行的三种方法
May 24 Python
深入理解pytorch库的dockerfile
Jun 10 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
WHOIS类的修改版
2006/10/09 PHP
php ob_flush,flush在ie中缓冲无效的解决方法
2010/05/09 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
php提交表单发送邮件的方法
2015/03/20 PHP
PHP判断IP并转跳到相应城市分站的方法
2015/03/25 PHP
浅谈PDO的rowCount函数
2015/06/18 PHP
PHP基于工厂模式实现的计算器实例
2015/07/16 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
Aster vs KG BO3 第二场2.19
2021/03/10 DOTA
零基础学JavaScript最新动画教程+iso光盘下载
2008/01/22 Javascript
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
2013/01/11 Javascript
JS获取地址栏参数的小例子
2013/08/23 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
JavaScript循环_动力节点Java学院整理
2017/06/28 Javascript
详解vue中使用express+fetch获取本地json文件
2017/10/10 Javascript
如何用webpack4带你实现一个vue的打包的项目
2018/06/20 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
2019/06/17 Javascript
Python编写的com组件发生R6034错误的原因与解决办法
2013/04/01 Python
python实现无证书加密解密实例
2014/10/27 Python
利用PyCharm Profile分析异步爬虫效率详解
2019/05/08 Python
用python写爬虫简单吗
2020/07/28 Python
Python绘图之二维图与三维图详解
2020/08/04 Python
如何在pycharm中安装第三方包
2020/10/27 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
全网最详细的PyCharm+Anaconda的安装过程图解
2021/01/25 Python
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
企业行政文员岗位职责
2013/12/03 职场文书
2014年小学元旦活动方案
2014/02/12 职场文书
党员违纪检讨书
2014/02/18 职场文书
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
三好学生事迹材料
2014/12/24 职场文书
长征观后感
2015/06/09 职场文书
浅谈Python数学建模之数据导入
2021/06/23 Python
MySQL创建管理RANGE分区
2022/04/13 MySQL