如何用sys.stdin.readlines()将输入转为Python整数列表?
解决方法:将标准输入的数字转为整数列表
没问题,我来帮你搞定这个转换问题!你现在遇到的核心问题是sys.stdin.readlines()会把每一行输入(包括换行符\n)都作为字符串元素存入数组,而我们需要的是把所有输入的数字统一转成整数列表。这里有几种简洁高效的处理方式:
通用处理方案(支持单行/多行输入)
不管你的输入是一行用空格分隔的数字,还是每行一个数字,这个方法都能完美处理:
import sys # 1. 读取所有行并合并成一个完整字符串 all_input = ''.join(sys.stdin.readlines()) # 2. 分割成单个数字字符串(自动忽略空格、换行、制表符等空白) num_strings = all_input.split() # 3. 把每个字符串转成整数,生成最终列表 int_list = [int(num) for num in num_strings]
或者用更简洁的链式写法:
import sys int_list = list(map(int, ''.join(sys.stdin.readlines()).split()))
单行输入专属简化方案
如果你确定输入只会是一行用空格分隔的数字,那可以直接用readline()代替readlines(),代码更短:
import sys int_list = [int(num) for num in sys.stdin.readline().split()]
为什么这些方法能解决问题?
''.join(sys.stdin.readlines()):把所有读取到的行字符串拼接成一个整体,消除了每行末尾的\n。split():默认会按任意空白字符(空格、换行、制表符等)分割字符串,所以不管数字是怎么排版的,都能准确拆分出每个数字的字符串。- 最后通过列表推导式或
map(int, ...)把每个字符串数字转成整数类型,得到你需要的整数列表。
内容的提问来源于stack exchange,提问作者Math Noob
相关产品推荐
相关产品推荐

