练习:站队顺序输出

平台:Python123.io

教师:嵩天

站队顺序输出

描述

有一群人站队,每人通过一对整数(h, k)来描述,其中h表示人的高度,k表示在此人前面队列中身高不小于此人的总人数。

实现一个算法输出这个队列的正确顺序。


输入格式

输入格式为二维列表,即 list[list[]]形式

外层list包含队列中全部的人,内层list为[h,k]格式,代表个人信息。

输出格式

输出格式为:list[list[int]]形式

与输入格式一样,需要按照队列顺序排列。

输入输出示例

  输入 输出
示例 1
[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]
[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]

from operator import itemgetter
queue = eval(input())queue.sort(key = itemgetter(1))
#print(queue)
queue.sort(key = itemgetter(0), reverse = True)
#print(queue)output = []
for item in queue:output.insert(item[1], item)#print(output)
print(output)

将注释掉的几行也一起打印,方便分析

输入[[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]]

输出

[[7, 0], [5, 0], [7, 1], [6, 1], [5, 2], [4, 4]]
[[7, 0], [7, 1], [6, 1], [5, 0], [5, 2], [4, 4]]
[[7, 0]]
[[7, 0], [7, 1]]
[[7, 0], [6, 1], [7, 1]]
[[5, 0], [7, 0], [6, 1], [7, 1]]
[[5, 0], [7, 0], [5, 2], [6, 1], [7, 1]]
[[5, 0], [7, 0], [5, 2], [6, 1], [4, 4], [7, 1]]
[[5, 0], [7, 0], [5, 2], [6, 1], [4, 4], [7, 1]]

可以发现代码中首先对列表进行两次排序:

第一次将每个子列表1号位升序排序,第二次将每个字列表0号位倒序排序。

两次排序后我们得到了[[7, 0], [7, 1], [6, 1], [5, 0], [5, 2], [4, 4]]这个列表,

接下来处理这个列表的方法就是一个个按此列表的顺序,将子列表插入到空列表中,

我们可以发现,每次插入时,已有子列表的“高度”肯定不小于正在插入的这个子列表,因此我们只需要按子列表第二项的位置去插入,插入完成后即可获得所需列表。

参考:https://blog.csdn.net/weixin_41153216/article/details/80857646

参考:https://blog.csdn.net/Hello_Mr_X/article/details/80911344

参考:https://www.cnblogs.com/nju2014/p/5568139.html

Python练习:站队顺序输出相关推荐

  1. Python练习题——站队顺序输出

    题目来源:Python语言程序设计(中国大学MOOC) 题目描述: 有一群人站队,每人通过一对整数(h, k)来描述,其中h表示人的高度,k表示在此人前面队列中身高不小于此人的总人数. 实现一个算法输 ...

  2. python利用列表计算斐波那契数列前30项并输出_python 题目:斐波那契数列计算;题目:站队顺序输出;题目:合法括号组合的生成;题目:用户登录(三次机会)...

    斐波那契数列计算 B 描述 斐波那契数列如下: F(0) = 0, F(1) = 1 F(n) = F(n-1) + F(n-2) 编写一个计算斐波那契数列的函数,采用递归方式,输出不超过n的所有斐波 ...

  3. python从小到大的顺序输出-python从小到大的顺序输出

    时间:2020-10-29 本页为您甄选多篇描写python从小到大的顺序输出,python从小到大的顺序输出精选,python从小到大的顺序输出大全,有议论,叙事 ,想象等形式.文章字数有400字. ...

  4. PYTHON#按照大小顺序输出三个数字

    #按照大小顺序输出三个数字 n1 = int(input('n1 = :')) n2 = int(input('n2 = :')) n3 = int(input('n3 = ')) def swap( ...

  5. python从小到大的顺序输出_「小白专栏」Python中使用for循环,为什么输出结果不是按顺序?...

    欢迎各位小哥哥小姐姐阅读本的文章,对大家学习有帮助,请点赞加关注哦!!!!!!!!!! 您的点赞和关注将是我持续更新的动力呢.^v^ 有不懂的问题可以私聊我哦! 前言 如图,为什么输出的不是按Jen, ...

  6. python 读取文件到字典读取顺序_python_实现dictionary按照输入顺序输出

    背景: 需要读取一个csv文件,并将其数据保存在dictionary中,并按照读文件的顺序输出,且不能引用第三方包,只能使用python自带模块.输出格式如下: 在使用python的dictionar ...

  7. python 两个浮点数按照从小到大顺序输出_PythonTip 50道题目(部分题解)

    描述: 下过象棋的人都知道,马只能走'日'字形(包括旋转90°的日),现在想象一下,给你一个n行m列网格棋盘, 棋盘的左下角有一匹马,请你计算至少需要几步可以将它移动到棋盘的右上角,若无法走到,则输出 ...

  8. Python dataframe指定列顺序输出 + 列数据转化成字符 + 数据框转化成列表

    参考: (3条消息)pandas中的DataFrame按指定顺序输出所有列 - quintind的专栏 - CSDN博客 https://blog.csdn.net/quintind/article/ ...

  9. python列表按照指定顺序排序-pandas中的DataFrame按指定顺序输出所有列的方法

    问题: 输出新建的DataFrame对象时,DataFrame中各列的显示顺序和DataFrame定义中的顺序不一致. 例如: import pandas as pd grades = [48,99, ...

最新文章

  1. 使用read write 读写socket
  2. java中判断字符串是否为数字的三种方法
  3. 【poj2187】 Beauty Contest
  4. firefly如何安装mysql_CentOS7 安装Firefly及测试
  5. cookie 和 session 详解
  6. Java 8流中的数据库CRUD操作
  7. 公布生成cscope.out, cscope.files, tags的脚本文件
  8. python中的引用怎么理解_Python函数通过引用调用
  9. hbase/thrift/go连接失败
  10. 5.1.7 INSERT新增数据
  11. STM8学习笔记---Modbus通信协议简单移植
  12. html5 viewpor,FileViewPro
  13. Ubuntu18.04下编译tslib触摸屏驱动
  14. (1.6w字)浏览器灵魂之问,请问你能接得住几个?
  15. 为什么要在信号线上串联一些小电阻
  16. 程序猿段子_那些关于程序员的段子
  17. win10触摸板双指单击不能唤出右键菜单
  18. leetcode695岛屿的最大面积
  19. Synthesys:语音合成和视频生成平台
  20. [Mysql]查看mysql默认密码

热门文章

  1. Java-static-静态方法/全局方法
  2. python爬取商品信息_Python基于BeautifulSoup爬取京东商品信息
  3. 今晚8点,Oracle ACE男神Roger详解Oracle中为什么没有double write?
  4. 12C 新特性 | 标量子查询自动转换
  5. 论文解读丨无参数的注意力模块SimAm
  6. SimpleDateFormat类的线程安全问题和解决方案
  7. 授人以渔:stm32资料查询技巧
  8. 【华为云技术分享】如何设计高质量软件-领域驱动设计DDD(Domain-Driven Design)学习心得
  9. 微型计算机技术第三版第三章答案,微型计算机原理与接口技术第三章习题及答案...
  10. -6dB的效果也不错