problem a: 简单的整数排序_python里的排序

ac49de7c5947d9b2d63aef1543d453cc.png

本篇文章主要讲:

  1. 自定义规则排序
  2. 多字段排序

开讲之前,先讲一些简单sorted()或者sort(),两者返回值不同!例如:

sorted([5, 2, 3, 1, 4]) # 输出:[1, 2, 3, 4, 5]

另一个呢

a = [5, 2, 3, 1, 4]
a.sort()
a
# 输出:[1, 2, 3, 4, 5]

Key 的使用

比如,如何把数组按照长度大小进行排序,只需设置key等于一个函数即可

sorted(["adf", "Adfdg", "aDfgbdfafg", "Gahgfh"], key = len) #输出 ['adf', 'adfdg', 'gahgfh', 'adfgbdfafg']

按照小写字母排序

sorted(["adf", "Adfdg", "aDfgbdfafg", "Gahgfh"], key = str.lower) #输出 ['adf', 'Adfdg', 'aDfgbdfafg', 'Gahgfh']

上面都是自带函数,下面就开始学习。

自定义规则排序

直接上题目,给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。

输入: [3,30,34,5,9]
输出: 9534330

这道题就是自定义排序,它有自己的排序规则,规则是 x + y > y + x,让x排在y前面

这里x,y表示任意两个数的字符串。

这里我提供两种办法

第一种,使用functools里的cmp_to_key,因为Python3取消了cmp

def largestNumber(nums):from functools import cmp_to_keydef helper(x, y):if x + y > y + x:return -1elif x + y < y + x:return 1else:return 0return "".join(sorted(map(str, nums), key=cmp_to_key(helper))).lstrip("0") or "0"

执行语句 largestNumber([3,30,34,5,9])

输出:'9534330'

第二种,使用类的魔法方法

def largestNumber( nums) -> str:class large_num(str):def __lt__(self, other):return self + other > other + selfreturn "".join(sorted(map(str, nums), key=large_num)).lstrip("0") or "0"

得到结果也是正确的!接下来看看

多字段排序

给你数组a = [[2,3],[4,1],(2,8),(2,1),(3,4)],按照第一个数从小到大排序,如果第一个数相同,就按第二个数从大到小。

a = [[2,3],[4,1],(2,8),(2,1),(3,4)]
sorted(a, key = lambda x: (x[0], -x[1])) # 输出:[(2, 8), [2, 3], (2, 1), (3, 4), [4, 1]]

其实掌握自定义规则排序,多字段排序也就会了,因为它是自定义排序的子集!

如果大家对python排序还有更深理解,欢迎留言,一起讨论!

参考资料:

【1】:https://docs.python.org/3/howto/sorting.html

【2】:https://blog.csdn.net/hanshileiai/article/details/44241385

9642e64592a5840f942fa3d942494ddd.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++ 多态 运行时多态和编译时多态_C++核心编程 第十一节 多态

前言&#xff1a;多态是C面向对象三大特性之一。多态&#xff0c;指的是一个类实例的相同方法在不同情形有不同表现形式。具有不同内部结构的对象可以共享外部接口。C多态就是用一个更通用的基类指针指向不同的子类实例&#xff0c;为了能调用正确的方法&#xff0c;我们需要用…

多线程操作时操作系统时间片_从零开始自制操作系统(15):内核多线程

1.多线程原理&#xff1a;&#xff08;1&#xff09;概述&#xff1a;多线程是指CPU可以在一段时间中并行执行多个程序&#xff0c;比如我们可以一边听音乐、一边写代码&#xff08;这两个程序可以“同时进行”&#xff0c;我们称之为多进程&#xff0c;而多进程实现的本质就是…

打开git界面_使用 Gitea 快速搭建私有 Git 版本控制服务

1. 前言分布式版本控制工具 Git 已经是现代软件源代码版本控制首选方案之一。公有 Git 服务提供商 国外知名如 GitHub 国内网络延迟高,Gitlab 涉嫌对中国的歧视不推荐。国内有 Gitee、Coding 生态还不错。但是一般公司的源代码除非开源项目是不会放在公有 Git 服务上的。所以我…

dev项目属性按钮是灰色_Spring Boot 中的项目属性配置

阅读本文约需要5分钟大家好&#xff0c;我是你们的导师&#xff0c;我每天都会在这里给大家分享一些干货内容(当然了&#xff0c;周末也要允许老师休息一下哈)。上次老师跟大家分享了Spring Boot 如何使用 SLF4J 进行日志记录&#xff0c;今天跟大家分享一下 Spring Boot 中的项…

diskgenius扩容c盘重启电脑卡住_电脑开机显示:reboot and select proper boot device怎么办?...

今天就碰到有一个知友问&#xff0c;自己电脑开机就提示&#xff1a;reboot and select proper boot device&#xff0c;整个人都懵了&#xff0c;不知道怎么办?其实对于电脑出现问题&#xff0c;大家不要着急&#xff0c;坚哥就来为大家分析下原因以及试着去解决。第一种原因…

大并发下程序出错_Python并发编程理论篇

前言其实关于Python的并发编程是比较难写的一章&#xff0c;因为涉及到的知识很复杂并且理论偏多&#xff0c;所以在这里我尽量的用一些非常简明的语言来尽可能的将它描述清楚&#xff0c;在学习之前首先要记住一个点&#xff1a; 并发编程永远的宗旨就是提高程序的运行效率&am…

月薪30K程序员花了一个小时,用c++做出经典扫雷游戏 !

上次发过一个俄罗斯方块的游戏源码&#xff0c;由于是通过Easy X实现的&#xff0c;但是很多和我一样的新手&#xff0c;一开始不知道Easy X是什么&#xff0c;到时源码拿过去之后&#xff0c;运行报错&#xff0c;我这次发的扫雷&#xff0c; 也是通过Easy X实现&#xff0c;…

用python写web网页_从零开始,使用python快速开发web站点(1) | 学步园

环境&#xff1a;ubuntu 12.04 python版本: 2.73 ok,首先&#xff0c;既然是从零开始&#xff0c;我们需要的是一台可以运行的python的计算机环境&#xff0c;并且假设你已经安装好了python, 然后&#xff0c;既然是快速开发&#xff0c;必不可少的需要用到框架&#xff0c;py…

修改so_货代、海运操作、船务操作还分不清?船公司SO文件看不懂?

货代是货物代理&#xff08;freight forwarding agent&#xff09;的简称&#xff0c;是指经营受他人委托&#xff0c;为其提供代办运输手续&#xff0c;代提、代发、代运货物服务的业务。货物代理&#xff0c;有些是中间商就是自己没有船或者飞机的或者船公司、航空公司&#…

一行代码蒸发64亿人民币!黑客盯上区块链漏洞!Python真的变态!

此前认为&#xff0c;区块链技术由于分布存储、加密算法等技术的应用&#xff0c;拥有了不可篡改、可追溯等被认为是“万无一失”的特性。然而&#xff0c;该特性主要针对存储在区块中的信息来说&#xff0c;以文中开头的案例为例&#xff0c;区块链技术保障了可以追溯到这64亿…

太吾绘卷第一世攻略_建平中学高二数学周练卷(2020.09)

试卷图片仅供学习交流使用&#xff0c;答案仅供参考【往期内容】高一是坎, 高二是坡, 高三是峰! 最全学习攻略新高一数学教材必修第一册第一章习题答案往年高中9月开学考月考数学试卷汇总2020上海高考复交综评录取率top202020北京大学强基计划数学试题2020上海16区零志愿、名额…

自动补足算法是什么_数据、算法岗的几点经验分享!

learners | 作者Datawhale | 来源目录有哪些好的秋招经验分享&#xff1f;机器学习中常用的最优化方法有哪些&#xff1f;想通过数据竞赛来提升实践能力&#xff0c;作为小白有什么入门经验&#xff1f;(今日问题)有哪些好的秋招经验分享&#xff1f;1李玲 - 携程算法工程师(…

我精心珍藏的Python代码技巧

01.****简洁的表达式 image 点评&#xff1a;Python因为简洁高效而出名&#xff0c;就是因为语法非常简单&#xff0c;而且内置了很多强大的数据结构&#xff1a; 比如我们可以大量用推导列表来生成很多简洁的代码 比如我们可以用if else组合&#xff0c;本来需要2-3行代码写…

python函数和类的区别_Python中类中的方法还有区别?

上一篇&#xff0c;我们讲到Python类中的属性是有区别的&#xff0c;爱思考的小伙伴们可能就会问了&#xff0c;Python中的方法是不是也有区别呢&#xff1f;是的&#xff0c;而且Python中的方法区别更大&#xff0c;让我们来看看吧~ Python类中的三种方法 Python中的方法可以分…

python 获取昨天的日期_利用Python来实现报表的自动发送,解放你时间去做更有意思的事情...

前言在日常工作中你可能因为每天都被各种各样的数据数据报表搞得焦头烂额&#xff0c;老板的&#xff0c;运营的、产品的等等。而且大部分报表都是重复性的工作&#xff0c;这篇文章就是帮助大家如何用Python来实现报表的自动发送&#xff0c;解放你的劳动力&#xff0c;可以让…

大数据 深度 分页_机器学习、深度学习、大数据 ?傻傻分不清楚?

提起机器学习四个字&#xff0c;不知你的脑海中是否会有一丝印象&#xff1f;毕竟身处信息时代&#xff0c;在日常生活中&#xff0c;无论通过什么媒介&#xff0c;接触到这个名词概念的机会还是挺大的。与之类似&#xff0c;还有以下这些名词概念&#xff1a;数据分析、数据挖…

jieba结巴分词--关键词抽取_结巴中文分词原理分析2

作者&#xff1a;白宁超&#xff0c;工学硕士&#xff0c;现工作于四川省计算机研究院&#xff0c;著有《自然语言处理理论与实战》一书&#xff0c;作者公众号&#xff1a;机器学习和自然语言处理(公众号ID&#xff1a;datathinks)结巴分词详解1中文分词介绍中文分词特点词是最…

cad动态块制作翻转_定制橱柜家具中CAD门型动态块制作方式图文讲解加视频

在定制橱柜家具中&#xff0c;我们用CAD我们经常会用一些门型放置到绘图当中&#xff0c;来展示CAD图纸的美观性&#xff0c;如下图&#xff1a;那么这些门型要是一点点画却是麻烦&#xff0c;所以我们可以把门型做成动态快的形式&#xff0c;对门型进行任意拉伸&#xff0c;方…

python json库安装_python怎么安装requests库

requests是python实现的简单易用的HTTP库&#xff0c;使用起来比urllib简洁很多 因为是第三方库&#xff0c;所以使用前需要cmd安装pip install requests 安装完成后import一下&#xff0c;正常则说明可以开始使用了。 基本用法&#xff1a; requests.get()用于请求目标网站&am…

32获取外部中断状态_Linux中断一网打尽(1) — 中断及其初始化

1中断是什么既然叫中断, 那我们首先就会想到这个中断是中断谁&#xff1f;想一想计算机最核心的部分是什么&#xff1f;没错&#xff0c; CPU&#xff0c; 计算机上绝大部分的计算都在CPU中完成&#xff0c;因此这个中断也就是中断CPU当前的运行&#xff0c;让CPU转而先处理这个…