Python如何实现类似C++的单行多类型顺序输入?
Python单行读取不同类型输入的简洁写法
在C++中,我们可以通过连续的>>运算符轻松从单行输入中读取不同类型的变量,示例代码如下:
int a; string b; int c; cin >> a >> b >> c;
甚至自定义类型只要重载了>>运算符,也能以同样方式读取。
你现在用Python实现的写法是:
a,b,c = [f(x) for f,x in zip((int,str,int),input().split())]
确实可以优化得更简洁直观,这里提供几种更贴近C++风格的单行实现方式:
先拆分输入再逐个转换(可读性最高,推荐):
parts = input().split() a, b, c = int(parts[0]), parts[1], int(parts[2])这种写法逻辑清晰,和C++的读取思路一致,先把整行输入拆分成字符串片段,再分别转换成对应类型。
用生成器表达式替代列表推导式(更节省内存):
a, b, c = (f(x) for f, x in zip((int, str, int), input().split()))把原写法中的列表推导式
[]换成生成器(),无需创建中间列表,效率更高。直接链式转换(适合短输入,但不推荐频繁调用
split()):a, b, c = int(input().split()[0]), input().split()[1], int(input().split()[2])这种写法虽然是单行,但会三次调用
input().split(),存在冗余,只适合简单场景。
内容的提问来源于stack exchange,提问作者Erel Segal-Halevi
相关产品推荐
相关产品推荐

