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的Django框架中调用方法和处理无效变量
Jul 15 Python
python中set常用操作汇总
Jun 30 Python
Python文件夹与文件的相关操作(推荐)
Jul 25 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
Feb 13 Python
Python时间的精准正则匹配方法分析
Aug 17 Python
用python实现百度翻译的示例代码
Mar 09 Python
django如何连接已存在数据的数据库
Aug 14 Python
python批量下载抖音视频
Jun 17 Python
Python 实现自动获取种子磁力链接方式
Jan 16 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
Jul 18 Python
Django项目在pycharm新建的步骤方法
Mar 02 Python
深入理解python多线程编程
Apr 18 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类
2006/11/25 PHP
PHP框架Laravel的小技巧两则
2015/02/10 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
利用php操作memcache缓存的基础方法示例
2017/08/02 PHP
yii框架数据库关联查询操作示例
2019/10/14 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
2019/10/15 PHP
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
2013/05/17 Javascript
JavaScript制作的可折叠弹出式菜单示例
2014/04/04 Javascript
jquery实现简单实用的打分程序实例
2015/07/23 Javascript
js实现完美兼容各大浏览器的人民币大小写相互转换
2015/10/29 Javascript
如何实现json数据可视化详解
2016/11/24 Javascript
Jquery Easyui日历组件Calender使用详解(23)
2016/12/18 Javascript
three.js实现3D影院的原理的代码分析
2017/12/18 Javascript
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
微信小程序常用的3种提示弹窗实现详解
2019/09/19 Javascript
vue prop属性传值与传引用示例
2019/11/13 Javascript
vue.js实现h5机器人聊天(测试版)
2020/07/16 Javascript
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
2020/11/04 Javascript
Python的Flask站点中集成xhEditor文本编辑器的教程
2016/06/13 Python
python下setuptools的安装详解及No module named setuptools的解决方法
2017/07/06 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
Python3中的列表生成式、生成器与迭代器实例详解
2018/06/11 Python
Python地图绘制实操详解
2019/03/04 Python
Python从函数参数类型引出元组实例分析
2019/05/28 Python
python挖矿算力测试程序详解
2019/07/03 Python
Jupyter Notebook打开任意文件夹操作
2020/04/14 Python
Python 实现一个简单的web服务器
2021/01/03 Python
de Bijenkorf比利时官网:荷兰最知名的百货商店
2017/06/29 全球购物
Jacadi Paris英国官网:法国童装品牌
2019/08/09 全球购物
销售主管竞聘书
2014/03/31 职场文书
单方离婚协议书范本(2014版)
2014/09/30 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
SQL实现LeetCode(180.连续的数字)
2021/08/04 MySQL