更简单的方法是在python中将stdin-lines转换为"float/int"数组

Tim*_*497 5 arrays string casting input python-3.x

我总是想学习更好更短的编码方法,所以我有一个非常复杂的输入,我想这可以写得更简单:

我有一个未知大小的浮点输入,我想在最后一个输入为新行时将每一行转换为数组.

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
Run Code Online (Sandbox Code Playgroud)

输入是这样的:

2.0 9.0 3.2 0.1 2.0
10 19 2.0
18 20 1.0 1.5
Run Code Online (Sandbox Code Playgroud)

Oli*_*çon 4

内置函数iter有专门针对此用例的第二种形式

第二种形式的一个有用应用iter()是读取文件 [或 stdin] 的行,直到到达某一行。

使用此功能,您可以通过单个列表理解获得相同的结果。

input_matrix = [[float(x) for x in line.split()] for line in iter(input, '')]

print(input_matrix)
Run Code Online (Sandbox Code Playgroud)

输出

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]]
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案!谢谢。 (2认同)