You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3中如何更优地处理控制台多行输入?

处理Python 3中的多行输入(整段复制粘贴场景)

当需要处理如下格式的多行输入时:

10
1
6
8
5
4
7
3
2
9
0

你最初使用的逐行读取代码:

numbers=[]
n = int(input()) # Get n numbers
for i in range(n): # Add n numbers in list
    numbers.append(int(input()))

仅支持逐行手动回车输入,整段复制粘贴时会抛出ValueError——因为input()仅读取第一行,后续内容会被当作无效输入干扰解析。

你自己实现的解决方案:

sample_input=input().splitlines()
n = int(sample_input[0]) # Get n numbers
data=[]
for i in range(1, n+1): # Add n numbers in list
    data.append(int(sample_input[i]))

以下是几种更简洁的优化实现:

方案1:用列表推导式+sys.stdin(最可靠)

sys.stdin能完整捕获所有输入内容,同时过滤空行避免干扰:

import sys

# 读取所有非空行
lines = [line.strip() for line in sys.stdin if line.strip()]
n = int(lines[0])
data = [int(line) for line in lines[1:n+1]]

方案2:结合read()和map(极简写法)

如果输入没有多余空行或空格,可直接按空白符分割处理:

import sys

lines = sys.stdin.read().split()
n = int(lines[0])
data = list(map(int, lines[1:n+1]))

sys.stdin.read()一次性读取所有输入,split()自动处理所有空白分隔符(换行、空格等),再通过map批量转成整数。

方案3:无依赖简化版(兼容部分环境)

在支持input()读取多行的终端/平台(按下Ctrl+D结束输入),可直接简化原方案:

lines = input().splitlines()
n = int(lines[0])
data = [int(line) for line in lines[1:n+1]]

内容的提问来源于stack exchange,提问作者uaevuon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 10:05:23