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

标签 arrays string python-3.x input casting

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

我有一个未知大小的浮点输入,当最后一个输入是一个新行时,我想把每一行都变成一个数组。

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/

相关文章:

arrays - Swift:不能将数组置为 nil

java - 将文件内容存储到数组中

javascript - 如何从数组中输出多个结果

Javascript从字符串中提取值

python-3.x - PyQt5 中的 QWebSettings(版本 5.6.0)

python - 我如何将两个嵌入合二为一?不和谐.py

python - “<' not supported between instances of ' str”和 'Node'?

c - C 中动态分配的字符串数组

python - 字符串格式 .format 到变量

c - 向 int 字符串添加前缀