Python 算法竞赛:快速IO+字符串常用方法一站式整理

Python刷题刚需工具代码总结:快速IO+字符串常用方法一站式整理

前言

平时刷算法题、做Python基础练习题时,原生input()和print()面对大数据量输入很容易超时,同时字符串判断、大小写转换、数字格式化、字符计数都是高频考点。今天把日常最常用、开箱即用的极简工具代码全部整理完毕,直接复制就能用,零基础也能看懂。

一、算法刷题必备:快速读入 ; 快速打印

1. 原生input痛点

Python内置的input()读取大量数据速度很慢,算法题大数据样例下极易超时,改用sys标准输入可以大幅提速。

2. 快速读入(快读)代码

python 复制代码
# 导入系统标准输入库
import sys
# 重写input方法,实现快速读取并自动去除首尾换行/空格
input = lambda: sys.stdin.readline().strip()
# 一行读取多个整数,直接转为列表
a = list(map(int, input().split()))

3. 快速打印(快写)代码

多次循环print会极大拖慢程序速度,推荐先把所有答案存入列表,最后一次性拼接输出,效率拉满。

python 复制代码
# 提前存储所有输出答案
ans = []
# 一次性拼接打印,减少IO次数
print(' '.join(map(str, ans)))

使用场景:所有算法竞赛、力扣刷题、大批量数据输入输出场景,必加两行代码,解决超时问题。

二、字符串字符判断:is系列内置方法

日常做题经常需要判断字符是字母、数字、还是空白符,Python内置4个极简方法,无需手写判断逻辑。

完整测试代码+运行结果

python 复制代码
s = 'hello015'
# 判断是否全部为纯字母
print(s.isalpha())      # 输出:False(包含数字)
# 判断是否全部为纯数字
print(s.isdigit())      # 输出:False(包含字母)
# 判断是否由字母+数字组成(无符号、无空格)
print(s.isalnum())      # 输出:True
# 判断是否为空白字符(空格、换行\n、制表符\t都算空白)
print(' \n\t'.isspace())# 输出:True

方法速记表

  • isalpha():纯英文字母返回True

  • isdigit():纯数字返回True

  • isalnum():仅字母+数字,无特殊符号返回True

  • isspace():仅空白字符返回True

三、字符串大小写格式化四大方法

很多新手分不清 capitalize() 和 title(),这里直观对比,一眼看懂区别:

python 复制代码
text = 'alan waker'
# 仅字符串首字母大写,其余全部小写
print(text.capitalize())  # 输出:Alan waker
# 每个单词首字母大写,其余小写
print(text.title())       # 输出:Alan Waker
# 字符串全部转为大写
print(text.upper())       # 输出:ALAN WAKER
# 字符串全部转为小写
print(text.lower())       # 输出:alan waker

易错区分 :capitalize只改整个句子第一个字母;title会修改每一个单词的首字母,做题时按需选择。

四、f-string高精度格式化输出

f-string是Python3.6+推荐的格式化方式,语法简洁,支持小数保留位数、补零、对齐等操作,比%格式化、format更易用。

python 复制代码
from math import pi
# 保留2位小数,自动四舍五入
print(f'{pi:.2f}')  # 输出:3.14

五、字符串count计数方法

快速统计字符串中某个字符出现的次数,无需手写循环遍历,一行代码搞定字符统计。count默认不计算重叠,这里推荐只计算单个字符时使用。

python 复制代码
# 统计字符串中字符1出现的总次数
print('1111'.count('1'))  # 输出:4

总结

  1. 刷题优先用快读快写,彻底避免输入输出超时;

  2. 字符判断直接用is系列方法,减少冗余代码;

  3. 大小写转换分清capitalize和title的差异;

  4. 数值格式化首选f-string,简洁高效;

  5. 字符频次统计直接调用count方法,不用手写循环。

相关推荐
5233AI开发笔记3 小时前
API 返回 429:先区分限速、并发和配额,再决定是否重试
python
Dovis(誓平步青云)3 小时前
启元 T1 Pro 人机相声搭档:语音-触摸双通道的启元机器人节奏引擎设计
开发语言·前端·javascript·microsoft·交互
databook3 小时前
经常听到的透视表是干什么的?
python·数据分析·pandas
做科研的周师兄3 小时前
【R语言实战】MixSIAR 氢氧同位素水源解析全流程:从混合空间校验到贝叶斯 MCMC 收敛诊断(后附完整代码)
java·大数据·开发语言
特立独行的猫A4 小时前
我用仓颉写了个多平台发文工具:一份 Markdown,一条命令发六个平台
java·后端·python
陆陆陆六4 小时前
# 五个AI引擎的答案采集:反爬、去重与时间窗对齐的三个工程细节
python·net·ai答案采集
闻缺陷则喜何志丹4 小时前
【C++特性】四种类型转
c++·算法·类型转换
喵本喵叁肆4 小时前
用 Boosting 把弱隐私算法炼成强隐私算法(英文原题:Boosting and Differential Privacy (FOCS 2010))
算法·集成学习·boosting
.痞老板.4 小时前
java ee--计算机是如何工作的
java·开发语言·java-ee
奇树谦5 小时前
Qt Quick 图片加载与 GPU 纹理机制详解:QImage、QQuickTextureFactory、QSGTexture 与异步加载
开发语言·qt·系统架构