当前位置: 首页 > news >正文

Python排序 -- 内附蓝桥题:错误票据,奖学金

排序

~~不定时更新🎃,上次更新:2023/02/28
在这里插入图片描述

🗡常用函数(方法)

1. list.sort() --> sort 是 list 的方法,会直接修改 list

举个栗子🌰

li = [2,3,1,5,4]
li.sort()
print(li) # [1, 2, 3, 4, 5]

2. sorted(iterable,key,reverse) --> 将可迭代对象进行排序,无法修改可迭代对象

举个栗子🌰

li = [2,3,1,5,4]
new = sorted(li)
print(li) # [2, 3, 1, 5, 4]
print(new) # [1, 2, 3, 4, 5]

🔴 sorted的参数 key --> 指定哪个元素排列举个栗子🌰

li = [[1,2,3],[5,6,7],[1,1,6]]
# 对每个列表的第一个元素进行排序(升序)
one = sorted(li,key=lambda x:x[0])# 结果为 [[1, 2, 3], [1, 1, 6], [5, 6, 7]]
print(one)
# 在第一个元素进行升序排序的基础上,对第二个元素进行升序排序
two = sorted(li,key=lambda x:(x[0],x[1])) # 结果为[[1, 1, 6], [1, 2, 3], [5, 6, 7]]
print(two)

🔵 sorted的参数 reverse–> 指定排列顺序,不设置默认为升序举个栗子🌰

li = [1,8,5,3,4]
# 默认升序
print(sorted(li)) # [1, 3, 4, 5, 8]
# 降序
print(sorted(li,reverse=True)) # [8, 5, 4, 3, 1]

⚫️ 补充:用 key 也可以实现降序效果,只需要将 x 映射为负数即可,举个栗子🌰 ****

li = [1,8,5,3,4]
# 降序
print(sorted(li,key = lambda x:-x)) # [8, 5, 4, 3, 1]

蓝桥例题1- 错误票据 🎫

题目描述

某涉密单位下发了某种票据,并要在年终全部收回。

每张票据有唯一的 ID 号。全年所有票据的 ID 号是连续的,但 ID 的开始数码是随机选定的。

因为工作人员疏忽,在录入 ID 号的时候发生了一处错误,造成了某个 ID 断号,另外一个 ID 重号。

你的任务是通过编程,找出断号的 ID 和重号的 ID

假设断号不可能发生在最大和最小号。

输入描述

输入描述

要求程序首先输入一个整数 N (N<100)表示后面数据行数。

接着读入 N 行数据。

每行数据长度不等,是用空格分开的若干个(不大于 100 个)正整数(不大于10510^5105)。

输出描述

要求程序输出 1 行,含两个整数 m,n,用空格分隔。

其中,m 表示断号 IDn 表示重号 ID

输入输出样例

示例

输入

2
5 6 8 11 9
10 12 9

输出

7 9

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 64M

思路

  1. 通过 + 把列表进行拼接可以得到一个完整的列表
  2. 用 sorted 函数排序,得到一个有序的列表
  3. 如果前一个号 != 后一个号有两种情况:
    • 情况1:出现重号 --> 即 前一个号 == 后一个号
    • 情况2:出现断号 --> 即 前一个号 + 2 == 后一个号(实际上排除掉情况 1,就是情况 2)

代码

n = int(input())
li = []
for i in range(n):li += list(map(int,input().split()))li = sorted(li)for i in range(len(li)-1):if li[i]+1 != li[i+1]: # 断号/重号if li[i] == li[i+1]: # 重号n = li[i]else: # 断号m = li[i]+1print(m,n)

蓝桥例题2 - 奖学金 💸

题目描述

某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前 5 名学生发奖学金。期末,每个学生都有 3 门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。

任务:先根据输入的 3 门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前 5 名学生的学号和总分。注意,在前 5 名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:学号、总分)是:

7 279
5 279

这两行数据的含义是:总分最高的两个同学的学号依次是 7 号、5 号。这两名同学的总分都是 279 (总分等于输入的语文、数学、英语三科成绩之和),但学号为 7 的学生语文成绩更高一些。如果你的前两名的输出数据是:

5 279
7 279

则按输出错误处理,不能得分。

输入描述

1 行为一个正整数 n(6≤n≤300),表示该校参加评选的学生人数。

2n+1 行,每行有 3 个用空格隔开的数字,每个数字都在 0100 之间。第 j 行的 3 个数字依次表示学号为 j−1 的学生的语文、数学、英语的成绩。每个学生的学号按照输入顺序编号为 1 ~ n(恰好是输入数据的行号减 1)。

所给的数据都是正确的,不必检验。

输出描述

输出共有 5 行,每行是两个用空格隔开的正整数, 依次表示前 5 名学生的学号和总分。

输入输出样例

示例 1

输入

6
90 67 80
87 66 91
78 89 91
88 99 77
67 89 64
78 89 98

输出

6 265
4 264
3 258
2 244
1 237

示例 2

输入

8
80 89 89
88 98 78
90 67 80
87 66 91
78 89 91
88 99 77
67 89 64
78 89 98

输出

8 265
2 264
6 264
1 258
5 258

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

思路

  1. 将 1 个学生的总分,学号,语数英成绩存在一个列表中
  2. 通过 sorted 中的 key 参数 和 reverse 参数 使得可以按照总分排序降序,总分相同,语文排序降序
  3. 为什么不用排学号?由于学号一开始是升序的,所以在排序中,必然也会尽量保证其升序的性质,也就是说,总分相同和语文成绩相同的学生,学号小的必然在前,因为学号保持了其有序性。

代码

n = int(input())
li = []
for i in range(n):x,y,z = map(int,input().split())Sum = x + y + z # 总分li.append([i+1,Sum,x,y,z]) # 添加五元组li = sorted(li,key=lambda x:(x[1],x[2]),reverse=True) # 总分排序降序,总分相同,语文排序降序for i in range(5):print(li[i][0],li[i][1])

如有错误,敬请指正,欢迎交流🤝,谢谢♪(・ω・)ノ

相关文章:

Python排序 -- 内附蓝桥题:错误票据,奖学金

排序 ~~不定时更新&#x1f383;&#xff0c;上次更新&#xff1a;2023/02/28 &#x1f5e1;常用函数&#xff08;方法&#xff09; 1. list.sort() --> sort 是 list 的方法&#xff0c;会直接修改 list 举个栗子&#x1f330; li [2,3,1,5,4] li.sort() print(li) …...

容器化部署是什么意思?有什么优势?

多小伙伴不知道容器化部署是什么意思&#xff1f;不知道容器化部署有什么优势&#xff1f;今天我们就来一起看看。 容器化部署是什么意思&#xff1f; 容器化部署是指将软件代码和所需的所有组件&#xff08;例如库、框架和其他依赖项&#xff09;打包在一起&#xff0c;让它…...

1.设计模式简介

一、设计模式的目的 1. 代码重用性 2. 可读性 3. 可扩展性 4. 可靠性 5. 高内聚&#xff0c;低耦合 二、设计模式七大原则 1. 单一职责原则 1&#xff09;降低类的复杂度&#xff0c;一个类只负责一项职责 2&#xff09;提高类的可读性&#xff0c;可维护性 3&#x…...

【算法题解】实现一个包含“正负数和括号”的基本计算器

这是一道 困难 题。 题目来自&#xff1a;leetcode 题目 给你一个字符串表达式 s &#xff0c;请你实现一个基本计算器来计算并返回它的值。 注意: 不允许使用任何将字符串作为数学表达式计算的内置函数&#xff0c;比如 eval() 。 提示&#xff1a; s 由数字、‘’、‘-’…...

网站服务器如何防护攻击?网站服务器被挂马如何检测

网站服务器是指安装在互联网上的服务器&#xff0c;主要用于提供网站服务。由于网站服务器的重要性&#xff0c;它也是攻击者的活动焦点&#xff0c;因此如何防护攻击就显得尤为重要。本文将分析网站服务器是如何被攻击的以及如何防护攻击。 网站服务器是怎么被攻击的? 网站…...

JavaSE16-面向对象-接口

文章目录一、概念二、格式1.使用interface来定义接口2.implements实现接口三、接口中的成员1.常用成员2.新增成员&#xff08;不重要&#xff09;2.1 默认方法2.2 静态方法2.3 私有方法四、继承关系 & 实现关系五、抽象类和接口的使用区别一、概念 接口就是规范\规则&…...

安卓设备蓝牙键盘快捷键

安卓设备蓝牙键盘快捷键前言注意鼠标按键系统快捷键桌面快捷键输入法快捷键其它快捷键旧快捷键&#xff08;已失效&#xff09;前言 安卓设备可以通过蓝牙或有线外接键盘&#xff0c;值得一提的是&#xff0c;安卓平板连接蓝牙键盘和蓝牙鼠标是一个不错的组合。本文以鸿蒙3.0平…...

Puppeteer项目结构梳理

最近接触了一个个人感觉很奈斯的项目&#xff0c;故记录思路如下&#xff1a; puppeteer项目梳理&#xff1a; 入口文件 run.js 入口命令 node run.js YourConfig.json 1、我们可以在自己的config.json里面设置好 ①、登录的用户名密码;aws或其它服务器的access等id,accessKey…...

(02)Unity HDRP Volume 详解

1.概述这篇文章主要针对HDRP中的Volume和Volume Post-processing进行解释&#xff0c;针对于各个组件只能进行部分参数的解释&#xff0c;具体的信息可参考官方资料&#xff0c;这里只是对官方文档的图片效果补充以及笔者自己的理解。看到这里进入正文&#xff0c;请确保你的Un…...

拒绝B站邀约,从月薪3k到年薪47W,我的经验值得每一个测试人借鉴

有时候&#xff0c;大佬们总是会特立独行。因为像我这样的常人总是想不通&#xff0c;究竟是怎样的情境&#xff0c;连B站这样的大厂面试都可以推掉&#xff1f; 缘起一通电话&#xff0c;踏出了改变人生轨迹的第一步 我是小瑾&#xff0c;今年28岁&#xff0c;2016年毕业于陕…...

分享一种实用redis原子锁的方式

1. setnx(lockkey, 当前时间过期超时时间) &#xff0c;如果返回1&#xff0c;则获取锁成功&#xff1b;如果返回0则没有获取到锁&#xff0c;转向2。2. get(lockkey)获取值oldExpireTime &#xff0c;并将这个value值与当前的系统时间进行比较&#xff0c;如果小于当前系统时间…...

【华为OD机试】 字符串解密(C++ Java JavaScript Python)

题目描述 给定两个字符串string1和string2。 string1是一个被加扰的字符串。 string1由小写英文字母(’a’’z’)和数字字符(’0’’9’)组成,而加扰字符串由’0’’9’、’a’’f’组成。 string1里面可能包含0个或多个加扰子串,剩下可能有0个或多个有效子串,这些有…...

金三银四,助力你的大厂梦,2023年软件测试经典面试真题(1)(共3篇)

前言 金三银四即将到来&#xff0c;相信很多小伙伴要面临面试&#xff0c;一直想着说分享一些软件测试的面试题&#xff0c;这段时间做了一些收集和整理&#xff0c;下面共有三篇经典面试题&#xff0c;大家可以试着做一下&#xff0c;答案附在后面&#xff0c;希望能帮助到大…...

假如面试官要你手写一个promise

promise 在开发中&#xff0c;经常需要用到promise&#xff0c;promise具有很多特性&#xff0c;这一次将对promise特性进行总结&#xff0c;并从零写一个promise。 步骤一 Promise特点 1&#xff0c;创建时需要传递一个函数&#xff0c;否则会报错2&#xff0c;会给传入的函…...

【leetcode】寻找重复数

题目链接&#xff1a;寻找重复数https://leetcode.cn/problems/find-the-duplicate-number/ 方法一&#xff1a;快慢指针 因为只有一个数字是重复的&#xff0c;且一个数字正好对应一个唯一的下标&#xff0c;所以可以将数组抽象为一个链表&#xff0c;假定数组为{1,2,3,4,5,…...

LeetCode 1247. Minimum Swaps to Make Strings Equal【数学,贪心,字符串】

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…...

pid控制加热算法,附代码仓库

1、该项目层次化结构清晰&#xff0c;代码框架耦合度低&#xff0c;可复用性、可移植性强。 2、功能代码与底层硬件无直接关联&#xff0c;无需更改上层应用逻辑&#xff0c;只需更改接口文件&#xff0c;即可移植到不同的硬件平台&#xff1b; 3、使用lwrb开源组件、pid开源算…...

一文看懂预训练和自训练模型

说到预训练模型&#xff0c;不得不提迁移学习了&#xff0c;由于很多数据不是标签数据&#xff0c;人工标注非常耗时&#xff0c;神经网络在很多场景下受到了限制。但是迁移学习和自学习的出现&#xff0c;在一定程度上缓解甚至解决了这个问题。我们可以在标签丰富的场景下进行…...

(五十四)大白话索引的页存储物理结构,是如何用B+树来实现的?.md

上一次我们给大家说了主键索引的目录结构&#xff0c;只要在一个主键索引里包含每个数据页跟他最小主键值&#xff0c;就可以组成一个索引目录&#xff0c;然后后续你查询主键值&#xff0c;就可以在目录里二分查找直接定位到那条数据所属的数据页&#xff0c;接着到数据页里二…...

前端Vue代码风格指南

一、命名规范 市面上常用的命名规范&#xff1a; camelCase&#xff08;小驼峰式命名法 —— 首字母小写&#xff09; PascalCase&#xff08;大驼峰式命名法 —— 首字母大写&#xff09; kebab-case&#xff08;短横线连接式&#xff09; Snake&#xff08;下划线连接式&…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...