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 相关文章推荐
下载给定网页上图片的方法
Feb 18 Python
TensorFlow安装及jupyter notebook配置方法
Sep 08 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
Jan 31 Python
Python Pandas找到缺失值的位置方法
Apr 12 Python
python找出完数的方法
Nov 12 Python
pygame游戏之旅 添加游戏暂停功能
Nov 21 Python
Python及Pycharm安装方法图文教程
Aug 05 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
Sep 06 Python
Python imutils 填充图片周边为黑色的实现
Jan 19 Python
Python flask框架实现浏览器点击自定义跳转页面
Jun 04 Python
Python实现钉钉/企业微信自动打卡的示例代码
Feb 02 Python
tensorflow2.0教程之Keras快速入门
Feb 20 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/10/09 PHP
PHP stream_context_create()作用和用法分析
2011/03/29 PHP
php笔记之:AOP的应用
2013/04/24 PHP
PHP的password_hash()使用实例
2014/03/17 PHP
php通过baihui网API实现读取word文档并展示
2015/06/22 PHP
PHP中的Trait 特性及作用
2016/04/03 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
js中各浏览器中鼠标按键值的差异
2011/04/07 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
jQuery实现id模糊查询的小例子
2013/03/19 Javascript
javascript随机显示背景图片的方法
2015/06/18 Javascript
Bootstrap进度条组件知识详解
2016/05/01 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
2017/01/18 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
2019/09/12 Javascript
[54:10]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
python结合selenium获取XX省交通违章数据的实现思路及代码
2016/06/26 Python
Python设置默认编码为utf8的方法
2016/07/01 Python
python如何在终端里面显示一张图片
2016/08/17 Python
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
Python生成随机密码的方法
2017/06/16 Python
Python模块搜索路径代码详解
2018/01/29 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
2018/04/28 Python
Python面向对象之类和实例用法分析
2019/06/08 Python
动态设置django的model field的默认值操作步骤
2020/03/30 Python
canvas绘制表情包的示例代码
2018/07/09 HTML / CSS
html5 worker 实例(二) 图片变换效果
2013/06/24 HTML / CSS
杭州联环马网络笔试题面试题
2013/08/04 面试题
工业自动化专业毕业生推荐信
2013/11/18 职场文书
自我评价范文点评
2013/12/04 职场文书
生日主持词
2014/03/20 职场文书
汉语言文学毕业求职信
2014/07/17 职场文书
2015年世界无烟日活动方案
2015/05/04 职场文书
2015年暑期社会实践报告
2015/07/13 职场文书
设置IIS Express并发数
2022/07/07 Servers