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 相关文章推荐
Windows下Python2与Python3两个版本共存的方法详解
Feb 12 Python
python学生管理系统开发
Jan 30 Python
python整合ffmpeg实现视频文件的批量转换
May 31 Python
创建Django项目图文实例详解
Jun 06 Python
python框架flask表单实现详解
Nov 04 Python
python连接打印机实现打印文档、图片、pdf文件等功能
Feb 07 Python
pandas使用之宽表变窄表的实现
Apr 12 Python
Python模拟登入的N种方式(建议收藏)
May 31 Python
python如何实现DES加密
Sep 21 Python
selenium携带cookies模拟登陆CSDN的实现
Jan 19 Python
Python爬取科目四考试题库的方法实现
Mar 30 Python
python办公自动化之excel的操作
May 23 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
完善CodeIgniter在IDE中代码提示功能的方法
2014/07/19 PHP
Zend Framework教程之Zend_Registry对象用法分析
2016/03/22 PHP
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
2017/03/23 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
关于document.cookie的使用javascript
2008/04/11 Javascript
JS判断变量是否为空判断是否null
2014/07/25 Javascript
js格式化时间小结
2014/11/03 Javascript
用jQuery获取table中行id和td值的实现代码
2016/05/19 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
使用Bootstrap美化按钮实例代码(demo)
2017/02/03 Javascript
浅谈ES6新增的数组方法和对象
2017/08/08 Javascript
Node.js五大应用性能技巧小结(必须收藏)
2017/08/09 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
2017/08/24 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
vue项目中使用rem,在入口文件添加内容操作
2020/11/11 Javascript
用Python写的图片蜘蛛人代码
2012/08/27 Python
浅析python 内置字符串处理函数的使用方法
2014/06/11 Python
使用Pyrex来扩展和加速Python程序的教程
2015/04/13 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
2018/01/29 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
在cmder下安装ipython以及环境的搭建
2018/10/19 Python
几行Python代码爬取3000+上市公司的信息
2019/01/24 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
2019/10/24 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
使用Keras中的ImageDataGenerator进行批次读图方式
2020/06/17 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
ASOS比利时:英国线上零售商及自有品牌
2018/07/29 全球购物
学校食堂采购员岗位职责
2013/12/05 职场文书
三个儿子教学反思
2014/02/03 职场文书
初中班主任经验交流材料
2014/05/16 职场文书
小学生环保标语
2014/06/13 职场文书
股份转让协议书范本
2015/01/27 职场文书
搞笑欢迎词大全
2015/09/30 职场文书