我一直想学习更好和更短的编码方法,所以我有一个非常复杂的输入,我想可以写得更简单:
我有一个未知大小的浮点输入,当最后一个输入是一个新行时,我想把每一行都变成一个数组。
import sys
input_matrix = []
for line in sys.stdin:
if line != '\n':
str_input = line.split(" ")
float_input = []
for i in range(len(str_input)):
float_input.append(float(str_input[i]))
input_matrix.append(float_input)
else:
break
输入是这样的:
2.0 9.0 3.2 0.1 2.0
10 19 2.0
18 20 1.0 1.5
最佳答案
内置 iter
has a second form专门针对此用例。
One useful application of the second form of
iter()
is to read lines of a file [or stdin] until a certain line is reached.
使用它,您可以通过单个列表理解获得相同的结果。
input_matrix = [[float(x) for x in line.split()] for line in iter(input, '')]
print(input_matrix)
输出
2.0 9.0 3.2 0.1 2.0
10 19 2.0
18 20 1.0 1.5
[[2.0, 9.0, 3.2, 0.1, 2.0], [10.0, 19.0, 2.0], [18.0, 20.0, 1.0, 1.5]]
关于arrays - 在python中将stdin行转换为 "float/int"数组的更简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50997006/