我的疑问:
input().strip() 与 sys.stdin.readline() 的不同
1. input().strip()
-
input()本质上就是从sys.stdin.readline()读一行,然后自动去掉结尾的 换行符。 -
所以严格来说:
input() == sys.stdin.readline().rstrip("\n") -
如果你再
.strip(),就会把开头和结尾的所有空白符(空格、\t、\n)都去掉。
2. sys.stdin.readline()
-
原始读取一行,包含末尾的
\n。 -
它比
input()快,常用于大数据量输入(例如10^5或更多行)。 -
但要注意手动
.strip()或.rstrip("\n")来去掉换行。
3. 性能区别
-
速度:
sys.stdin.readline()>input(),因为input()里还带了额外封装。 -
常用场景:
-
数据量小:用
input(),简单好记。 -
数据量大(ACM / LeetCode 超大输入):推荐
sys.stdin.readline()。
-
举例
# 读一行 "123\n"
s1 = input() # s1 == "123"
s2 = sys.stdin.readline() # s2 == "123\n"
# 所以通常写法:
s2 = sys.stdin.readline().strip()
所以总结:
-
input().strip()≈sys.stdin.readline().strip()(在大多数题里等价) -
但
sys.stdin.readline()本身更快,适合大数据输入。
要不要我给你整理一个 ACM 常用输入方式对比表(单行、多行、EOF、T组、矩阵输入)?

2756

被折叠的 条评论
为什么被折叠?



