从美国获得一份数字列表作为输入

2024-03-29 06:41:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用raw_input()来获得一个数字列表,但是使用了代码

numbers = raw_input()
print len(numbers)

输入[1,2,3]给出了7的结果,所以我猜它将输入解释为字符串。有没有什么直接的方法可以把它列出来?也许我可以用re.findall来提取整合物,但如果可能的话,我更喜欢用一种更像Python的溶液。


Tags: 方法字符串代码re列表inputrawlen
3条回答

eval(a_string)将字符串计算为Python代码。显然这不是特别安全。通过使用ast模块中的literal_eval函数,可以获得更安全(更受限)的计算。

raw_input()在Python 2.x中被称为它,因为它获得原始输入,而不是“解释”输入。input()解释输入,即等同于eval(raw_input())

在Python 3.x中,input()raw_input()以前做的事情,如果这是您想要的,则必须手动计算内容(即eval(input()))。

在Python3.x中,使用这个。

a = [int(x) for x in input().split()]

示例

>>> a = [int(x) for x in input().split()]
3 4 5
>>> a
[3, 4, 5]
>>> 

解析由空格分隔的数字列表要比解析Python语法容易得多:

Python3:

s = input()
numbers = list(map(int, s.split()))

Python2:

s = raw_input()
numbers = map(int, s.split())

相关问题 更多 >