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实现拉钩网上的FizzBuzzWhizz问题示例
May 05 Python
常见python正则用法的简单实例
Jun 21 Python
python中ASCII码字符与int之间的转换方法
Jul 09 Python
详解配置Django的Celery异步之路踩坑
Nov 25 Python
python实现杨氏矩阵查找
Mar 02 Python
python 读取修改pcap包的例子
Jul 23 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
Aug 02 Python
python各类经纬度转换的实例代码
Aug 08 Python
完美解决python针对hdfs上传和下载的问题
Jun 05 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
Feb 22 Python
Python进行区间取值案例讲解
Aug 02 Python
python3中apply函数和lambda函数的使用详解
Feb 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 split汉字
2009/06/05 PHP
PHP设计模式之解释器模式的深入解析
2013/06/13 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
Jquery知识点三 jquery表单对象操作
2011/01/17 Javascript
IE6/7/8中Option元素未设value时Select将获取空字符串
2011/04/07 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
禁止拷贝网页内容的js代码
2014/01/22 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
简介JavaScript中Boolean.toSource()方法的使用
2015/06/05 Javascript
Bootstrap实现input控件失去焦点时验证
2016/08/04 Javascript
JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法
2017/01/20 Javascript
JavaScript实现前端实时搜索功能
2020/03/26 Javascript
Angular项目中$scope.$apply()方法的使用详解
2017/07/26 Javascript
JS实现自定义状态栏动画文字效果示例
2017/10/12 Javascript
微信小程序实现上拉加载功能
2019/11/20 Javascript
python命令行参数sys.argv使用示例
2014/01/28 Python
python使用多线程不断刷新网页的方法
2015/03/31 Python
Python面向对象总结及类与正则表达式详解
2019/04/18 Python
浅析Python 责任链设计模式
2020/09/11 Python
Python中三维坐标空间绘制的实现
2020/09/22 Python
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
Linux文件操作命令都有哪些
2016/07/23 面试题
如何用Python输出一个Fibonacci数列
2016/08/28 面试题
银行个人求职自荐信范文
2013/12/16 职场文书
企业文化口号
2014/06/12 职场文书
幼儿园门卫岗位职责范本
2014/07/02 职场文书
学校消防安全责任书
2014/07/23 职场文书
超市七夕促销活动方案
2014/08/28 职场文书
质检员岗位职责
2015/02/03 职场文书
2016圣诞节贺卡寄语
2015/12/07 职场文书
TensorFlow的自动求导原理分析
2021/05/26 Python
整理Python中常用的conda命令操作
2021/06/15 Python
vue 自定义组件添加原生事件
2022/04/21 Vue.js
vue/cli 配置动态代理无需重启服务的方法
2022/05/20 Vue.js