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通过定义一个类实例作为ftp回调方法
May 04 Python
Python中shape计算矩阵的方法示例
Apr 21 Python
Python爬取附近餐馆信息代码示例
Dec 09 Python
python基于twisted框架编写简单聊天室
Jan 02 Python
python实现人脸识别经典算法(一) 特征脸法
Mar 13 Python
浅谈python配置与使用OpenCV踩的一些坑
Apr 02 Python
Python将文字转成语音并读出来的实例详解
Jul 15 Python
python傅里叶变换FFT绘制频谱图
Jul 19 Python
python实现差分隐私Laplace机制详解
Nov 25 Python
Python 实现自动登录+点击+滑动验证功能
Jun 10 Python
详解python中的异常和文件读写
Jan 03 Python
解决Jupyter-notebook不弹出默认浏览器的问题
Mar 30 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
在PHP3中实现SESSION的功能(二)
2006/10/09 PHP
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
php expects parameter 1 to be resource, array given 错误
2011/03/23 PHP
PHP操作数组的一些函数整理介绍
2011/07/17 PHP
PHP 实现explort() 功能的详解
2013/06/20 PHP
PHP数据库链接类(PDO+Access)实例分享
2013/12/05 PHP
linux系统下php安装mbstring扩展的二种方法
2014/01/20 PHP
PHP字符串中特殊符号的过滤方法介绍
2014/02/18 PHP
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
微信支付开发维权通知实例
2016/07/12 PHP
php array_pop 删除数组最后一个元素实例
2016/11/02 PHP
PHP文件后缀不强制为.php方法
2019/03/31 PHP
javascript Zifa FormValid 0.1表单验证 代码打包下载
2007/06/08 Javascript
基于Jquery的回车成tab焦点切换效果代码(Enter To Tab )
2010/11/14 Javascript
js中判断对象是否为空的三种实现方法
2013/12/23 Javascript
JS组件中bootstrap multiselect两大组件较量
2016/01/26 Javascript
设置点击文本框或图片弹出日历控件的实现代码
2016/05/12 Javascript
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
jquery获取input type=text中的值的各种方式(总结)
2016/12/02 Javascript
微信小程序实现tab页面切换功能
2018/07/13 Javascript
vue中过滤器filter的讲解
2019/01/21 Javascript
利用不到200行代码写一款属于你自己的js类库
2019/07/08 Javascript
node.js express框架简介与实现
2019/07/23 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
回调函数的意义以及python实现实例
2017/06/20 Python
Python语言描述KNN算法与Kd树
2017/12/13 Python
通过cmd进入python的实例操作
2019/06/26 Python
pandas 强制类型转换 df.astype实例
2020/04/09 Python
html5使用canvas实现弹幕功能示例
2017/09/11 HTML / CSS
h5移动端调用支付宝、微信支付的实现
2020/06/08 HTML / CSS
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
发现世界上最好的珠宝设计师:JewelStreet
2017/12/17 全球购物
应届大学生求职的自我评价
2013/11/17 职场文书
《罗布泊,消逝的仙湖》教学反思
2014/03/01 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书
Python批量将csv文件转化成xml文件的实例
2021/05/10 Python