我在python中遇到问题,读取包含用空格分隔的int的行。 例如,我想获得输入:
8 9 3 2 7 5
并将其保存到数组中,如:
A = [8, 9, 3, 2, 7, 5]
我尝试了以下代码但它有语法错误:
A = [input().split()]
答案 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
的分割结果使用map
和int
:
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]