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 Socket编程入门教程
Jul 11 Python
Python入门篇之字符串
Oct 17 Python
详解如何用OpenCV + Python 实现人脸识别
Oct 20 Python
Django admin美化插件suit使用示例
Dec 12 Python
Python实现PyPDF2处理PDF文件的方法示例
Sep 25 Python
解决Tensorflow占用GPU显存问题
Feb 03 Python
Python安装依赖(包)模块方法详解
Feb 14 Python
Python计算指定日期是今年的第几天(三种方法)
Mar 26 Python
浅谈keras中loss与val_loss的关系
Jun 22 Python
Python tkinter实现日期选择器
Feb 22 Python
pytorch 一行代码查看网络参数总量的实现
May 12 Python
教你用python控制安卓手机
May 13 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
第一节--面向对象编程
2006/11/16 PHP
php实现图片转换成ASCII码的方法
2015/04/03 PHP
PHPstorm快捷键(分享)
2017/07/17 PHP
juqery 学习之五 文档处理 包裹、替换、删除、复制
2011/02/11 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
javascript遇到html5的一些表单属性
2015/07/05 Javascript
JavaScript对象数组排序实例方法浅析
2016/06/15 Javascript
Augularjs-起步详解
2016/07/08 Javascript
AngularJS中的API(接口)简单实现
2016/07/28 Javascript
Yarn的安装与使用详细介绍
2016/10/25 Javascript
Vue-input框checkbox强制刷新问题
2019/04/18 Javascript
vue实现tab栏点击高亮效果
2020/08/19 Javascript
Javascript新手入门之字符串拼接与变量的应用
2020/12/03 Javascript
[01:12:40]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第三场 1月25日
2021/03/11 DOTA
使用PDB简单调试Python程序简明指南
2015/04/25 Python
Python中元组,列表,字典的区别
2017/05/21 Python
python虚拟环境virtualenv的安装与使用
2017/09/21 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
2019/08/09 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
python清空命令行方式
2020/01/13 Python
Django查询优化及ajax编码格式原理解析
2020/03/25 Python
python 字典item与iteritems的区别详解
2020/04/25 Python
python中的列表和元组区别分析
2020/12/30 Python
CSS3 input框的实现代码类似Google登录的动画效果
2020/08/04 HTML / CSS
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
BLACKMORES澳洲官网:澳大利亚排名第一的保健品牌
2018/09/27 全球购物
美国名表在线商城:Ashford(支持中文)
2019/09/24 全球购物
优秀实习生感言
2014/03/01 职场文书
科长竞争上岗演讲稿
2014/05/12 职场文书
作风转变心得体会
2014/09/02 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
关于antd tree 和父子组件之间的传值问题(react 总结)
2021/06/02 Javascript
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis
python语言中pandas字符串分割str.split()函数
2022/08/05 Python