Python针对大规模数据使用”sys模块加速I/O操作“:
常用输出:
sys.stdout.write()
-
读取一行:
import sys
object = sys,stdin.readline().split() # 写法1
input = sys.stdin.readline # 写法2 适用于需要多次调用输出,节省书写长度
object = input().split()
# 测试代码:
import sys
def main():
input = sys.stdin.readline # 快速读取一行
t = int(input())
res = []
for _ in range(t):
a, b = map(int, input().split())
res.append(str(a + b))
sys.stdout.write("\n".join(res))
if __name__ == '__main__':
main()
# 测试数据:
1
1 2
-
读取所有行:
import sys
object = sys.stdin.readlines().split()
# 需要手动解释,切换到下一行后先 ctrl+z(手动结束输入),后 enter ---> windows
# Linux、macos 按下 ctrl+d
import sys
def main():
lines = sys.stdin.readlines()
# 示例处理:将每行字符串反转
res = [line.strip()[::-1] for line in lines] # 去掉所有空白字符
sys.stdout.write("\n".join(res))
if __name__ == '__main__':
main()
# 测试数据
1 2 3 4 5 6
123456
# 二者输出结果都一样:654321
-
读取所有输入:
import sys
data = sys.stdin.read().split()
# 测试代码:
import sys
def main():
data = sys.stdin.read().split() # 读取所有输入,并按空白字符分割
it = iter(data)
t = int(next(it))
res = []
for _ in range(t):
a = int(next(it))
b = int(next(it))
res.append(str(a + b))
sys.stdout.write("\n".join(res))
if __name__ == '__main__':
main()
# 测试数据:
3
1 2
3 4
5 6
-
处理二进制 I/O:
import sys
data = sys.stdin.buffer.read() # 读取原始的二进制数据(bytes),后续按需手动解码
# sys.stdin.buffer.read() # 字节流层面 返回底层字节流,不会自动解码
# sys.stdin.read() # 文本流层次 自动将底层的字节流解码成字符串
# 读取二进制输入并解码(假设为 UTF-8 编码)
data = sys.stdin.buffer.read().decode('utf-8').split()
# 测试代码:
import sys
def main():
# 读取二进制输入并解码(假设为 UTF-8 编码)
data = sys.stdin.buffer.read().decode('utf-8').split()
it = iter(data)
t = int(next(it))
res = []
for _ in range(t):
a = int(next(it))
b = int(next(it))
res.append(str(a + b))
# 输出前先编码成二进制
sys.stdout.buffer.write("\n".join(res).encode('utf-8'))
if __name__ == '__main__':
main()