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

蓝桥杯算法之基础知识(4)

目录

Ⅰ.sorted排序

Ⅱ.排序具体的方法

(1)sort的神方法(注意是sort)

(2)sorted的神方法(注意这里是sorted)

        常见场景

         1. 单关键字排序

         2. 多关键字排序

         3.按倒序字符串排序:

         4.按字典某字段排序:

         5.单条件 

         6.多条件组合:

         7.处理 None:

Ⅲ.list和str创建以及tuple元组

Ⅳ.字符串的拼接和for的倒序遍历

Ⅴ.列表的拼接---join的使用:列表list转为字符串

Ⅵ.split()的使用和join通常配合使用

Ⅶ.list的负数访问

Ⅷ.ord和chr函数(非常有用)

1. ord() 函数

2. chr() 函数

Ⅸ.一键实现 十进制转2、8、 16 进制(必须要会)

Ⅹ.一键实现2、 8、 16进制转10进制(同理这个也必须要会)


Ⅰ.sorted排序

》列表排序---segs=[[1, 4], [3, 6], [5, 7]]

(1)普通的简单方法:

s = sorted(segs)---(默认情况升序,值为False)

降序---s = sorted(segs, reverse=True)

默认排序规则当不指定 key 参数时,sorted() 会使用默认的排序规则。对于列表中的子列表,Python 会按字典序进行比较:

  • 先比较每个子列表的第一个元素,

  • 如果第一个元素相等,再比较第二个元素,以此类推。

(2)带有lambda表达式的key方法

s=sortef(segs,key=lambda x:x[0])

特别注意:字符也能进行排序

Ⅱ.排序具体的方法

(1)sort的神方法(注意是sort)

def var(x):    print(f"处理: {x}")    return x 
N = [3, 1, 2] 
N.sort(key=var) # 输出: # 处理: 3 # 处理: 1 # 处理: 2 
print(N)  # [1, 2, 3]

为啥 var 不用带参数:

  • key=var 的写法

    • sort() 会自动把列表中的每个元素传给 var 函数。

    • 你写 key=var(不加括号),是把函数本身传给 sort(),而不是调用它。

    • sort() 内部会循环调用 var(x),x 是 N 中的每个元素。

  • 不需要显式参数:

    • sort() 知道要对 N 的每个元素应用 var,所以你只定义 var(x) 的逻辑,sort() 负责传参。

  • 错误写法:N.sort(key=var())

    • 这会立刻调用 var(),但 var 需要一个参数,报错 TypeError: var() missing 1 required positional argument: 'x'。

  • 正确写法:N.sort(key=var)

    • 传函数名,sort() 自动处理。

(2)sorted的神方法(注意这里是sorted)

def var(x):print(f"处理: {x}")return xN = [3, 1, 2]
M = sorted(N, key=var)
# 输出:
# 处理: 3
# 处理: 1
# 处理: 2
print(M)  # [1, 2, 3]
print(N)  # [3, 1, 2](原列表不变)

》明白了其实key里面就是对数组里的x进行统一的变化,比如x%10,x//10,甚至有a=sorted(a,key=lambda x:(var(x),x))

  • sorted(iterable, key=None, reverse=False):

    • iterable:要排序的对象(列表、元组等)。

    • key:一个函数,定义排序依据

    • reverse:是否降序。

    • 返回:新的排序后的列表。

  • lambda:

    • 匿名函数,写法是 lambda 参数: 表达式

    • 在 sorted() 中,lambda 定义怎么比较每个元素。

常见场景
  1. 用 lambda 按绝对值排序:

    a = [-3, 2, -1] b = sorted(a, key=lambda x: abs(x)) print(b) # [-1, 2, -3]

  2. 降序:

    a = [3, 1, 2] b = sorted(a, key=lambda x: x, reverse=True) print(b) # [3, 2, 1]

1. 单关键字排序
  • 按最后一位数字排序:

    a = [13, 25, 31] b = sorted(a, key=lambda x: x % 10) print(b) # [31, 13, 25](1, 3, 5)

  • 按字符串长度:

    a = ['cat', 'elephant', 'dog'] b = sorted(a, key=lambda x: len(x)) print(b) # ['cat', 'dog', 'elephant']

2. 多关键字排序
  • 用元组:lambda 返回元组,按元素顺序比较。

  • 例子:按 (主关键字, 次关键字) 排序:

    pairs = [(1, 3), (2, 1), (1, 2)] b = sorted(pairs, key=lambda x: (x[0], x[1])) print(b) # [(1, 2), (1, 3), (2, 1)]

3.按倒序字符串排序
a = ['cat', 'dog', 'bat']
b = sorted(a, key=lambda x: x[::-1])
print(b)  # ['dog', 'bat', 'cat']  #反转后的字符串是:'tac'、'god'、'tab'然后进行排序
4.按字典某字段排序
data = [{'name': 'cat', 'age': 3}, {'name': 'dog', 'age': 2}] b = sorted(data, key=lambda x: x['age']) print(b)  # [{'name': 'dog', 'age': 2}, {'name': 'cat', 'age': 3}]
5.单条件
a = [ -2,1,3, -4] b = sorted(a, key=lambda x: x if x > 0 else -x) 
print(b)  # [1,-2, 3, -4]
#把所有数字映射成“正数形式”,但保留正负信息,最终排序按照正数排但显示最初的值
6.多条件组合
a = ['cat', 'dog', 'elephant'] 
b = sorted(a, key=lambda x: (len(x), x))  # 先长度,再字典序 
print(b)  # ['cat', 'dog', 'elephant']
7.处理 None
a = [1, None, 3] 
b = sorted(a, key=lambda x: (x is None, x)) 
print(b)  # [None, 1, 3]

Ⅲ.list和str创建以及tuple元组

》tuple元组化:

》list和str创建:

》默认情况下,输入的就是字符串类型

Ⅳ.字符串的拼接和for的倒序遍历

Ⅴ.列表的拼接---使得默认下标从1开始引入元素

join的使用:列表list转为字符串

或者另一个方法

Ⅵ.split()的使用和join通常配合使用

Ⅶ.list的负数访问

Ⅷ.ord和chr函数(非常有用)

1. ord() 函数

ord() 函数用于获取一个字符的 Unicode 码点(整数表示)。

语法
ord(c)


参数
c:一个长度为 1 的字符串(即单个字符)。
返回值
返回字符 c 的 Unicode 码点(整数)。

print(ord('A'))  # 输出:65
print(ord('a'))  # 输出:97
print(ord('中'))  # 输出:20013



2. chr() 函数

chr() 函数用于将一个 Unicode 码点(整数)转换为对应的字符。

语法
chr(i)


参数
i:一个整数,表示 Unicode 码点(范围:0 到 1114111)。
返回值
返回 Unicode 码点 i 对应的字符。

print(chr(65))  # 输出:A
print(chr(97))  # 输出:a
print(chr(20013))  # 输出:中

Ⅸ.一键实现 十进制转2、8、 16 进制(必须要会)

Ⅹ.一键实现2、 8、 16进制转10进制(同理这个也必须要会)

http://www.dtcms.com/a/362723.html

相关文章:

  • Mysql杂志(七)
  • Deepin25安装mysql8.4.5
  • 在ROS中获取并发布UBS式传感器的温湿度
  • PostgreSQL(1) FETCH用法
  • 企业数字安全守护神:IT运维管理系统全面解析,构建坚不可摧的防护体系
  • 简陋的RPC
  • 从代码到组件:C语言动态库(DLL)封装与使用终极指南
  • NV115NV119美光固态闪存NV129NV112
  • 加速交通云建设,移动云为我国交通强国目标提供有力支撑
  • AES-GCM和(AES-CBC+SHA2-25-HAMC组合,并且发方通过每次内容,更新iv,填序使用递增数字)算法比较
  • 系统科学核心概念辨析及其在人工智能领域的应用研究:一个整合性分析框架
  • 分布式光纤传感选型 3 问:你的场景该选 DTS、DAS 还是 BOTDA?
  • 解锁WebRTC在数字人领域的无限潜能
  • 面试问题:c++的内存管理方式,delete的使用,vector的resize和reverse,容量拓展
  • 大数据量模块设置渲染性能优化
  • 白电三巨头 2025 年战局:美的领跑破局,海尔稳健筑垒,格力承压求变
  • Spring 中 Hikari 与 Druid 的详细介绍、对比及同类组件分析
  • go-mapus最简单的离线瓦片地图协作
  • 【Linux系统】万字解析,进程间的信号
  • 并发编程——13 线程池ThreadPoolExecutor实战及其原理分析
  • md5sum -c用法详解
  • 【Vue2 ✨】Vue2 入门之旅(八):过渡与动画
  • 基础文本处理工具与文本三剑客其二sed awk
  • unity 中的 gradle building 加速(可能无用,导致包体异常)
  • 【C++详解】C++11(三) 可变参数模板、包扩展、empalce系列接⼝、新的类功能
  • MyBatis:让 SQL 与代码和谐共处的持久层框架
  • React学习教程,从入门到精通, React 入门指南:React JSX 语法知识点详解及案例代码(8)
  • React 学习笔记4 Diffing/脚手架
  • go命令行工具:如何在现有的工程里加入使用cobra
  • 01 - 网页和web标准