存储由空格分隔的多个int输入

时间:2018-03-15 22:24:11

标签: python python-2.7

我在python中遇到问题,读取包含用空格分隔的int的行。 例如,我想获得输入:

8 9 3 2 7 5

并将其保存到数组中,如:

A = [8, 9, 3, 2, 7, 5]

我尝试了以下代码但它有语法错误:

A = [input().split()]

4 个答案:

答案 0 :(得分:4)

问题是你正在使用input。在Python 2中,input要求输入,然后尝试将其评估为Python代码。

因此,当您键入8 9 3 2 7 5时,它会尝试将其评估为Python代码 - 当然这不是有效的Python语法。

您要做的是使用raw_input,它只是要求输入并将其作为字符串返回给您的代码。然后,您可以在其上调用split()并获取字符串列表。

当你转到Python 3时,这个问题就消失了 - input只返回一个字符串。

同时,将split()的结果放在括号中并没有多大帮助。最终得到一个列表,其中一个元素是另一个列表,其元素是拆分字符串。所以你可能只想要:

A = raw_input().split()

如果需要将每个字符串转换为int,则必须在每个字符串上调用int。您可以使用list comprehension

执行此操作
A = [int(numeral) for numeral in raw_input().split()]

...或map

A = map(int, raw_input().split())

...或显式循环:

A = []
for numeral in raw_input().split():
    A.append(int(numeral))

如果您不理解前两个,请使用最后一个,直到您可以弄清楚它们是如何工作的。简洁易读的代码非常重要,但您可以理解(以及调试,维护和扩展)的代码更为重要。

答案 1 :(得分:1)

A = [input().split()]很接近,但在Python2中,input旨在评估传递给它的内容。因此,对raw_input的分割结果使用mapint

A = map(int, raw_input().split())

答案 2 :(得分:0)

所以输入是一串由空格分隔的数字?您只需将信息放在方法拆分中,即

A = [input().split(" ")]

答案 3 :(得分:0)

打开文件并执行此操作:

print([list(map(int,line.strip().split(' '))) for line in open('file.txt','r')][0])

输出:

[8, 9, 3, 2, 7, 5]