【蓝桥杯】Python基础:经济基础决定上层建筑!

news2024/9/20 12:02:05

前言:今年4月第一次参加蓝桥杯比赛,选择的Python 研究生组赛道。在备赛过程中,发现经常会用到一些编程小技巧,因此笔者整理了一些蓝桥杯Python组编程基础常用的内容,以便日后备用。如果有小伙伴也觉得实用,赶快点赞收藏一下~!(持续更新)


本文目录

  • 一、输入
  • 二、输出
  • 三、声明创建列表
  • 四、简单排序
    • 4.1 列表函数sort()
    • 4.2 内置函数sorted()
    • 4.3 sort()与sorted()区别
    • 4.4 自定义比较函数 多列排序


一、输入

单个数输入,一般不用eval函数,速度会比较慢。

# 整型输入
n = int(input())

# 浮点输入
k = float(input())

# 输入三个数,例如:1 2 3,除非有特殊字符截取,否则最好split()函数参数为空。
a,b,c = map(int,input().split())

# 输入一串数字,例如:1 2 3 4 5,得到列表[1,2,3,4,5]
s = list(map(int,input().split()))

二、输出

输出使用格式化符号比较习惯。

# 隔空输出
a = [1,2,3,4]
print(' '.join(map(str,a)))   #1 2 3 4

# 四舍五入
a = 3.1415926
print(int(a + 0.5))

# 保留两位,仅截取两位小数,并不会四舍五入
a = 3.1415926
print("%.2f"%a)

# 保留两位+四舍五入。保留几位就在后一位上+5
print('%.2f'%(a+0.005)))

# 不足几位,前导/补0,'%03d'中间数字对应几位
print('%03d'%2) # '002'

三、声明创建列表

# 1.创建全0列表,长度为n的一维0列表
a = [0 for _ in range(n)]
# 或者
a = [0]*n
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

# 2.创建二维空列表
a = [[] for _ in range(n)]
# [[], [], [], [], [], [], [], [], [], []]

# 3.创建二维全0列表,m行n列的0二维数组
a = [[0 for _ in range(n)] for _ in range(m)]
# 或者
a = [[0] * n for _ in range(m)]
# 注意:不能使用[[0]*n]*m,此语句m行将指向同一对象[0]*n,即引用的同一对象,改变一行其它行都会跟着变。

四、简单排序

4.1 列表函数sort()

list.sort(key=None,reverse=False),对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。
参数:

  • key – 用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse – 排序规则,reverse = True 降序, reverse = False 升序(默认)。

注意:因为python中无法修改字符串元素,所以对字符串无法使用sort函数,必须先把字符串转换转换成列表list(str)。

list=[30,40,10,50,50.1,80,60,100,90] 
list.sort()  # 升序
# [10, 30, 40, 50, 50.1, 60, 80, 90, 100]  
list.sort(reverse=True) # 降序
# [100, 90, 80, 60, 50.1, 50, 40, 30, 10]

aList = ['Google', 'Runoob', 'Taobao', 'Facebook']
aList.sort()
# ['Facebook', 'Google', 'Runoob', 'Taobao']

vowels = ['e', 'a', 'u', 'o', 'i']
# 降序
vowels.sort(reverse=True)
# ['u', 'o', 'i', 'e', 'a']

4.2 内置函数sorted()

sorted() 函数对所有可迭代的对象进行排序操作。

sort 与 sorted 区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。即对字符串也可以,因为sorted返回的是新对象。
list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

sorted(iterable, key=None, reverse=False),返回重新排序的新列表。
参数:

  • iterable – 可迭代对象。
  • key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
sorted([5,2,3,1,4]) # 默认升序
# [1,2,3,4,5]

# sorted 的应用,也可以通过 key 的值来进行数组/字典的排序,比如:
# 获取列表中字典中key-age的值
def takeSecond(elem):
    return elem['age']

array = [{"age":20,"name":"a"},{"age":25,"name":"b"},{"age":10,"name":"c"}]
array = sorted(array,key=takeSecond)
# [{'age': 10, 'name': 'c'}, {'age': 20, 'name': 'a'}, {'age': 25, 'name': 'b'}]

4.3 sort()与sorted()区别

  • sort是应用在list上的方法,sorted可以对所有可迭代的对象进行排序操作;
  • sort是在原列表上排序,而sorted产生一个新的列表,不改变原列表;
  • 部分排序。sort()不能在一部分上做排序,只能整体排序。sorted()可以部分排序,但是不能在原数据上排序。

4.4 自定义比较函数 多列排序

  • 自定义比较函数sort(key=f_sort)
  • key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
# 自定义比较函数
def f_sort(elem): # 具体的函数的参数就是取自于可迭代对象中,即列表元素
      return (b[elem],elem) # 返回用来比较的元素,若b[elem]相同,则比较elem,依次类推

例题1:
在这里插入图片描述

'''
题解:模拟排序题。
      1.自定义比较函数sort(key=f_sort)
'''

# 输入
n = int(input())
m = int(input())

# 原数组
a = [i for i in range(1,n+1)]
# 数位和数组
b = [0]*(n+1)
for i in range(1,n+1):
      # 求i的数位之和
      num = i
      while num != 0:
            b[i] += num%10
            num //= 10


# 自定义比较函数
def f_sort(elem): # 具体的函数的参数就是取自于可迭代对象中,即列表元素
      return (b[elem],elem) # 返回用来比较的元素,若b[elem]相同,则比较elem,依次类推

# 排序
# a.sort(key=lambda x:(b[x],x))
a.sort(key=f_sort)
print(a)
print(a[m-1])

例题2:
在这里插入图片描述

'''
题解:模拟排序题。
      1.自定义比较函数sort(key=f_sort)
      2.多列排序,按总分高到低降序排列,总分相同的按语文成绩高到低降序排列,总分和语文都相同,按学号小升序排列。
      例如:先按照成绩降序排序,相同成绩的按照名字升序排序:
            d1 = [{'name':'alice', 'score':38}, {'name':'bob', 'score':18}, {'name':'darl', 'score':28}, {'name':'christ', 'score':28}]
            l = sorted(d1, key=lambda x:(-x['score'], x['name']))
'''

# 输入
n = int(input())
# 构建排序原数组
a = []
for i in range(1,n+1):
      c,m,e = map(int,input().split())
      grade = c + m + e
      a.append((grade,c,i))
# print(a)

# 自定义比较函数
def f_sort(elem):
      return (-elem[0],-elem[1],elem[2])

# 排序,默认升序
a.sort(key=f_sort)
# 输出前五名
for tup in a[:5]:
      print(f'{tup[2]} {tup[0]}')

欢迎点赞评论,指出不足,笔者由衷感谢!~

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

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

相关文章

1 对数器,二分查找,

文章目录 对数器二分查找**1. 有序序列二分查找****2. 在一个有序数组中&#xff0c;找<某个数最右侧的位置****3. 在一个有序数组中&#xff0c;找>某个数最左侧的位置****4. 无序序列二分查找 &#xff0c;求局部最小值** 对数器 对数器用于在自己的本地平台验证算法正…

百度、谷歌等搜索引擎高效搜索方法 —— 更快速搜索到你想要内容

一、常用搜索方法 1、限定标题 intitle 又被称为去广告搜索法&#xff0c;intitle命令&#xff0c;即in title&#xff08;在标题里&#xff09;返回的的结果是网页的标题包含该关键词。一般情况下搜索的关键词都会在标题里出现&#xff0c;使用intitle命令一般是在特殊需求下…

极乐迪斯科(风格) | Disco Elysium – Style LoRA

目录 What is this ❓How to use / 使用方法 &#x1f4dd;其他信息与参数: 模型演示&#xff08;多图预警&#xff09; 正面tag 负面tag What is this LoRA版本的极乐迪斯科风格模型, 使用共计15张图片, 分辨率为1024*1024, 用Anything v4.5训练. 其他模型没有经过测试,…

Linux之【多线程】生产者与消费者模型BlockQueue(阻塞队列)

生产者与消费者模型 一、了解生产者消费者模型二、生产者与消费者模型的几种关系及特点三、BlockQueue&#xff08;阻塞队列&#xff09;3.1 基础版阻塞队列3.2 基于任务版的阻塞队列3.3 进阶版生产消费模型--生产、消费、保存 四、小结 一、了解生产者消费者模型 举个例子&am…

计算机组成原理第五章(3)DMA处理

三种控制方式&#xff1a;程序查询程序中断DMA方式 回顾一下 之前的中断控制方式&#xff0c;如果是输入命令&#xff0c;先启动命令&#xff0c;通过地址总线选择相应的接口&#xff0c;通过地址译码之后的到选择电路&#xff0c;这个接口准备开始工作。 启动外部设备&#…

网络编程总结一:

一、网络基础&#xff1a; 概念&#xff1a;1> 网络编程的本质就是进程间的通信&#xff0c;只不过进程分布在不同的主机上 2>在跨主机传输过程中&#xff0c;需要确定通信协议后&#xff0c;才可以通信 1. OSI体系结构&#xff08;重点&#xff09; 定义7层模型&…

类和对象(上篇)【C++】

C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。 C是基于面向对象的&#xff0c;关注的是对象&#xff0c;将一件事拆分成不同的对象&#xff0c;靠对象之间的交互完成。 目录 一、类的定义 二、访问限定符…

【小样本分割 2020 TPAMI 】PFENet

文章目录 【小样本分割 2020 TPAMI 】PFENet1. 简介1.1 问题1) 高级特征误用造成的泛化损失2) 查询样本和空间样本之间的空间不一致 1.2 方法 2. 网络2.1 整体架构2.2 先验掩膜生成2.3 FEM模块 3. 代码 【小样本分割 2020 TPAMI 】PFENet 论文题目&#xff1a;Prior Guided Fea…

flinkCDC相当于Delta.io中的什么 delta.io之CDF

类似flink CDC databricks 官方文档: How to Simplify CDC With Delta Lakes Change Data Feed - The Databricks Blog delta.io 官方文档: Change data feed — Delta Lake Documentation 概述 更改数据馈送 (CDF) 功能允许 Delta 表跟踪 Delta 表版本之间的行级更改 在…

C语言函数与递归

目录&#x1f60a; 1. 函数是什么&#x1f43e; 2. 库函数&#x1f43e; 3. 自定义函数&#x1f43e; 4. 函数参数&#x1f43e; 5. 函数调用&#x1f43e; 6. 函数的嵌套调用和链式访问&#x1f43e; 7. 函数的声明和定义&#x1f43e; 8. 函数递归&#x1f43e; 1. 函…

二叉搜索树(内含AVL树的旋转操作的详细解释)

二叉搜索树 二叉搜索树的概念二差搜索树结构设计二叉搜索树的操作以及实现遍历判空插入查找删除(☆☆☆)二叉搜索树的其他方法 二叉搜索树的应用二叉搜索树的性能分析二叉树习题练习AVL树AVL树的概念AVL树的结构设计AVL树的插入(非常重要)AVL树的旋转(☆☆☆☆☆)AVL树的插入操…

基于STATCOM的风力发电机稳定性问题仿真分析(Simulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

网页三剑客之 HTML

本章开始我们来介绍一下网页前端部分&#xff0c;我们只是简单的介绍一些常用的各种标签&#xff0c;其目的在于为我们后面的项目做准备。 我们并不要求能完全掌握前端的语法&#xff0c;但是在见到以后能够认识这些代码就可以了。 想走后端开发的&#xff0c;前端不需要多么…

【C++】哈希和unordered系列封装

1.哈希 1.1 哈希概念 顺序结构以及平衡树中&#xff0c;元素关键码与其存储位置之间没有对应的关系&#xff0c;因此在查找一个元素时&#xff0c;必须要经过关键码的多次比较。顺序查找时间复杂度为O(N)&#xff0c;平衡树中为树的高度&#xff0c;即O( l o g 2 N log_2 N l…

CSAPP学习笔记 2 浮点数(自用)

1. 首先 我们回忆一下计算机思维导论的编码问题 小白鼠问题 (107条消息) 小白鼠喝水问题------计算机思维 编码思想(自用)_和光同尘463的博客-CSDN博客 2. 对于一些可表示的浮点数比如 101.11可以用二进制精确表示 因为是2的倍数 但是 对于一些不可整除的浮点数 我们又如何…

阿里云服务器部署node项目笔记

阿里云部署node项目笔记 此过程中全部安装都按照B站教程实现本篇是个人笔记&#xff0c;许多细节并未陈述比如开发阿里云对应端口等&#xff0c;不是完整的过程&#xff0c;如有误导在此致歉。 安装node报错linux查看nginx配置文件 使用 nginx -t mongodb数据库安装解决&#x…

【JAVA】#详细介绍!!! 文件操作之File对象(1)!

本文内容不涉及文件内容操作&#xff0c;主要是对指定文件元信息的获取&#xff0c;以及通过java代码如何创建一个文件或者删除文件 目录 文件操作的File对象 File对象的基本操作方法 得到文件&#xff08;夹&#xff09;对象的信息元 1.getParent 2. getName 3.getPath 4…

CentOS 安装与配置Nginx【含修改配置文件】

1.安装Nginx yum install nginx -y2.启动Nginx systemctl start nginx查询是否启动nginx systemctl status nginx3.尝试访问 这是默认的配置文件 # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * …

wordcloud制作词云图

wordcloud制作词云图 wordcloud中文方框问题 jieba&#xff08;分词&#xff09;jieba库分词的三种模式 wordcloud WordCloud(font_pathNone, width400, height-200,margin2,maskNone, max_words200, min_font_size4, stopwordsNone,background_colorblack, max_font_sizeNone…

js中setinterval怎么用?怎么才能让setinterval停下来?

setinterval()是定时调用的函数&#xff0c;可按照指定的周期&#xff08;以毫秒计&#xff09;来调用函数或计算表达式。 setinterval()的作用是在播放动画的时&#xff0c;每隔一定时间就调用函数&#xff0c;方法或对象。 setInterval() 方法会不停地调用函数&#xff0c;…