首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在python中将stdin行转换为"float/int“数组的更简单方法

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

Stack Overflow用户
提问于 2018-06-23 08:37:21
回答 2查看 1.2K关注 0票数 5

我总是想学习更好和更短的编码方法,所以我有一个相当复杂的输入,我想可以用更简单的方式来编写:

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

代码语言:javascript
复制
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

输入是这样的:

代码语言:javascript
复制
2.0 9.0 3.2 0.1 2.0
10 19 2.0
18 20 1.0 1.5
EN

回答 2

Stack Overflow用户

发布于 2018-06-23 09:10:35

代码语言:javascript
复制
>>>import sys
>>>input_matrix = []
>>> while True:
...   line = sys.stdin.readline().strip()
...   if not line:
...     break
...   input_matrix.append(map(float, line.split()))
...
2.0 9.0 3.2 0.1 2.0
10 19 2.0
18 20 1.0 1.5

>>> input_matrix
[[2.0, 9.0, 3.2, 0.1, 2.0], [10.0, 19.0, 2.0], [18.0, 20.0, 1.0, 1.5]]
票数 0
EN

Stack Overflow用户

发布于 2018-06-23 09:12:29

为什么不使用一个小列表理解。在这段代码中,它可以节省2行代码,但在大程序中,它可以节省相当多的代码行,并且不要忘记导入sys,否则会显示错误。代码如下:

代码语言:javascript
复制
import sys
input_matrix = []
for line in sys.stdin:
    if line != '\n':
        str_input = line.split(" ")
        float_input = [str_input[i] for i in range(len(str_input))]
        input_matrix.append(float_input)
    else:
        break
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50997006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档