type
status
date
slug
summary
tags
category
icon
password
Last edited time
Jan 3, 2025 01:29 PM
多关键字排序,位运算,Counter,dafaultdict,字符串常量,reduce,格式化输出,多组输入,进制转换,有序集合
0 本节习题一览1 多关键字排序1.1 简易匿名函数1.2 自定义比较函数2 位运算3 计数 Counter4 默认字典 defaultdict5 字符串常量6 reduce7 print格式化输出7.1 对齐7.2 填充7.3 精度控制7.4 数字格式化8 多组输入9 进制转换10 有序集合10.1 SortedList(按值排序)10.2 SortedSet(按值排序+去重)10.3 SortedDict(按键排序)
0 本节习题一览
多关键字排序习题:937. 重新排列日志文件
位运算习题:401. 二进制手表
计数习题:1189. “气球” 的最大数量
1 多关键字排序
list.sort()
函数是稳定的,即排序前后值相同的数据位置不发生改变sorted(x)
方法来对可迭代的序列排序生成新的序列,该函数同样是稳定的上述函数都接受指定
reverse
参数,默认为升序False
,传值为True
则为降序排列1.1 简易匿名函数
1.2 自定义比较函数
可实现较为复杂的排序规则,并且可以使用外部变量
多关键字排序习题:937. 重新排列日志文件
2 位运算
快速进行乘2除2
节省空间
快速实现二进制(01)枚举
求n的第k位数字:
n >> k & 1
左移举例
bin()
转二进制位运算习题:401. 二进制手表
3 计数 Counter
Counter()
是collections
里面的一个类,作用是计算出字符串或者列表等中不同元素出现的个数,返回值可以理解为一个字典键不存在时不会报错,默认返回0
用法示例:
计数习题:1189. “气球” 的最大数量
4 默认字典 defaultdict
当字典里的key不存在但被查找时,返回的不是
keyError
而是指定数据类型的默认值用法示例:
5 字符串常量
常量名称 | 描述 | 示例输出 |
string.ascii_lowercase | 所有的 ASCII 小写字母 | 'abcdefghijklmnopqrstuvwxyz' |
string.ascii_uppercase | 所有的 ASCII 大写字母 | 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' |
string.ascii_letters | 所有的 ASCII 字母(小写 + 大写) | 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' |
string.digits | 所有的数字字符(0 到 9) | '0123456789' |
string.hexdigits | 所有的十六进制字符(0-9 和 a-f/A-F) | '0123456789abcdefABCDEF' |
string.octdigits | 所有的八进制字符(0 到 7) | '01234567' |
string.punctuation | 所有的 ASCII 标点符号 | '!"#$%&\'()*+,-./:;<=>?@[\\]^_ { |
string.printable | 所有可打印字符(字母、数字、标点、空格) | 包含空格、字母、数字、标点等 |
string.whitespace | 所有空白字符(如空格、换行、制表符等) | 包括: ' \t\n\r\x0b\x0c' |
6 reduce
reduce有三个参数:
- function:有两个参数的额函数, 必需参数
- sequence: 元组、列表等可迭代对象, 必需参数
- inital: 初始值, 可选参数
执行过程:
在迭代sequence(
tuple
,list
,dictionary
, string
等可迭代类型)的过程中,- 首先把 前两个元素传给 函数参数,函数加工后,
- 然后把得到的结果和第三个元素作为两个参数传给函数参数,
- 函数加工后得到的结果又和第四个元素作为两个参数传给函数参数,依次类推
如果传入了
initial
值, 那么首先传的就不是 sequence
的第一个和第二个元素,而是 initial
值和 第一个元素。7 print格式化输出
7.1 对齐
7.2 填充
7.3 精度控制
7.4 数字格式化
输出结果:
8 多组输入
这种方法适用于交互式输入,逐行读取输入直到输入结束(例如,输入空行或使用 EOF(Ctrl+D 或 Ctrl+Z)终止输入)。
9 进制转换
通过int函数可以实现实现任意进制转化成十进制,十进制转常用进制
10 有序集合
- 全部基于二分查找树实现,插入和删除的时间复杂度都是
O(log n)
- 都会自动维护排序,不需要手动调用排序函数
- SortedDict 按键排序,SortedSet 不允许重复元素,SortedList 允许重复元素
- 都支持高效的二分查找操作
10.1 SortedList(按值排序)
10.2 SortedSet(按值排序+去重)
10.3 SortedDict(按键排序)
- 作者:ziuch
- 链接:https://ziuch.com/article/Python-Syntax-Supplement
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。