Python 写 ACM 题目的一些技巧
2024-09-01 02:03:03
输入输出
input() 输入
Python3 中 input() 函数接受一个标准输入数据,返回为 string 类型。以换行(\n)结束。
input([prompt])
- prompt: 提示信息。
split() 用于输入
split() 做输入处理,通过指定分隔符对字符串进行切片,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
str.split(str="", num=string.count(str))
- str:分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
- num:分割次数,默认为 \(-1\) ,即分隔所有。
逐个数据输入
x = input().split() # 输入两个整数
a = int(x[0]) # 第一个整数
b = int(x[1]) # 第二个整数
数组输入
x = input()
a = []
for i in x.split():
a.append(int(i)) # 注意数据类型转换
strip() 输入清理
Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。注意只能删除开头和结尾的字符,不能删除中间部分的字符。
str.strip([chars])
- chars:移除字符串头尾指定的字符序列。注意移除尾部字符序列时为反向,对称删除。
逐个数据输入
a = int(input().strip())
print() 输入
print(a)
如果不想换行:
print(a, end='str') # 输出不换行,以 str 为分割
sort 排序
可以用 list 和 truple 实现 C/C++ 中结构体排序的功能。
lst = [('d', 2), ('a', 4), ('b', 3), ('c', 2)]
# 按照value排序
lst.sort(key=lambda k: k[1])
print(lst)
# 按照key排序
lst.sort(key=lambda k: k[0])
print(lst)
# 先按value排序再按key排序
lst.sort(key=lambda k: (k[1], k[0]))
print(lst)
"""输出
[('d', 2), ('c', 2), ('b', 3), ('a', 4)]
[('a', 4), ('b', 3), ('c', 2), ('d', 2)]
[('c', 2), ('d', 2), ('b', 3), ('a', 4)]
"""
更加复杂的需求。首先我们先建立如下 list :
lst = [{'level': 19, 'star': 36, 'time': 1},
{'level': 20, 'star': 40, 'time': 2},
{'level': 20, 'star': 40, 'time': 3},
{'level': 20, 'star': 40, 'time': 4},
{'level': 20, 'star': 40, 'time': 5},
{'level': 18, 'star': 40, 'time': 1}]
排序需求为:level 越大越靠前;level 相同,star 越大越靠前;level 和 star 相同,time 越小越靠前。
# 注意按照需求反向实现
# 先按time排序
lst.sort(key=lambda k: (k.get('time', 0)))
# 再按照level和star顺序
# reverse=True表示反序排列,默认正序排列
lst.sort(key=lambda k: (k.get('level', 0), k.get('star', 0)), reverse=True)
最新文章
- knockoutJS学习笔记07:绑定上下文
- 安装vs2010,vs2015后,删除2015,导致vs2016打不开
- tomcat jdk servlet websocket版本对应关系
- Autofac中的属性注入功能使用
- MVC显示Base64图片
- JS模式:策略模式,感觉就是一个闭包存储信息,然后是加一些验证方法--还看了老半天
- Huge CSV and XML Files in Python, Error: field larger than field limit (131072)
- Mysql Not in有null值查询的问题
- json_encode如何防止汉字转义成unicode
- SSM整合中遇到的不能扫描注解的bug
- spring异常记录-----java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
- createNewFile()与createTempFile()的不同
- My97DatePicker.js 之无效日期设置
- HQL语法
- [特斯拉组件]ios高性能PageController
- [POJ2243]考研路茫茫——单词情结
- nginx的环境配置的问题
- MongoDB初了解——用户权限
- python day08 文件操作
- Ansible Playbook 详解
热门文章
- hadoop批量命令脚本xrsync.sh传输脚本
- HashMap、HashTable、ConcurrentHashMap、TreeMap、LinkedHashMap、WeakHashMap区别
- 吴恩达深度学习:2.15python中的广播
- Java中的==和equals( )方法
- XML 总结
- nginx的反向代理和配置
- java 线程池 ScheduledExecutorService
- WPF界面控件Telerik UI for WPF发布R2 2019 SP1|实现新的属性
- Quartz(二)
- iOS画线段