>>> [int(x) for x in raw_input().split()]
1 2 3 5 100
[1, 2, 3, 5, 100]
^{pr2}$
创建一个按空格分隔的新列表,然后[int(x) for x in raw_input().split()]
将此新列表中的每个字符串转换为整数。在list()
是一个函数,它从诸如>>> list({1, 2, 3}) # constructs list from a set {1, 2, 3}
[1, 2, 3]
>>> list('123') # constructs list from a string
['1', '2', '3']
>>> list((1, 2, 3))
[1, 2, 3] # constructs list from a tuple
所以>>> list('1 2 3 5 100')
['1', ' ', '2', ' ', '3', ' ', '5', ' ', '1', '0', '0']
list函数还可以遍历字符串,并将每个字符追加到新列表中。但是,您需要用空格分隔,因此list函数不合适。在
input接受字符串并将其转换为对象'1 2 3 5 100'
不是有效的python对象,它是由空格分隔的5个数字。
考虑一下打字,把这个弄清楚>>> 1 2 3 5 100
SyntaxError: invalid syntax
变成一个Python壳。这只是无效的语法。所以input也会引起这个错误。在
重要的是:
input不是一个安全的函数,因此即使您的字符串是{},您也不应该使用input,因为有害的python代码可以通过input执行。
如果出现这种情况,请使用ast.literal_eval:>>> import ast
>>> ast.literal_eval('[1,2,3,5,100]')
[1, 2, 3, 5, 100]