Skip to main content
 首页 » 编程设计

python之在 python 中使用 raw_input 获取列表

2025年05月04日15zhengyun_ustc

我正在尝试在 python 代码中使用 raw_input 来获取列表的用户输入,如下所示。

input_array.append(list(raw_input())); 

用户输入为:

1 2 3 5 100 

但是代码将输入解释为

[['1', ' ', '2', ' ', '3', ' ', '5', ' ', '1', '0', '0']] 

尝试:如果我使用纯 input() 而不是 raw_input(),我会在控制台中遇到问题。

"SyntaxError: ('invalid syntax', ('<string>', 1, 3, '1 2 3 4 100'))" 

注意:我不允许像

这样的列表格式输入
[1,2,3,5,100] 

有人可以告诉我如何进一步进行吗?

请您参考如下方法:

>>> [int(x) for x in raw_input().split()] 
1 2 3 5 100 
[1, 2, 3, 5, 100] 

>>> raw_input().split() 
1 2 3 5 100 
['1', '2', '3', '5', '100'] 

创建一个由空格分隔的新列表,然后

[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 Shell。这只是无效的语法。所以 input 也会引发此错误。

重要的一点: input 不是一个安全的函数,所以即使你的字符串是 '[1,2,3,5,100]' 你不应该使用 input 因为有害的 python 代码可以通过 input 执行。 如果出现这种情况,请使用 ast.literal_eval:

>>> import ast 
>>> ast.literal_eval('[1,2,3,5,100]') 
[1, 2, 3, 5, 100]