1

可能重复:
如何在 Python 中获取用户输入的列表?

我目前有这个:

c = eval(input("Enter a group of numbers "))
#say someone types 123
print (c)
#prints out 123

我要这个:

c = eval(input("Enter a group of numbers "))
#say they enter 123
print (c)
#prints out [1,2,3]

我想123最终成为[1,2,3]. 我怎样才能做到这一点?

4

7 回答 7

6
In [32]: c=raw_input()
123

In [33]: map(int,c)
Out[33]: [1, 2, 3]

如果split()输入类似于1 2 3

In [37]: c=raw_input()
1 2 3

In [38]: map(int,c.split())
Out[38]: [1, 2, 3]
于 2012-10-03T17:34:33.957 回答
4

您可以int使用以下方法将数字转换为 s map()

>>> map(int, '123')
[1, 2, 3]
于 2012-10-03T17:35:12.710 回答
4
>>> s = '123'
>>> [int(c) for c in s]
[1, 2, 3]
于 2012-10-03T17:35:21.737 回答
1

怎么样?:

c = [int(x) for x in input("Enter a group of numbers ")]
#list comprehension over the input function

输入 123 结果为 [1, 2, 3]

好的,假设对于 python 2.x(输入返回一个 int 对象)

c = [int(x) for x in str(input("Enter a group of numbers "))]
#added an str() function for iterating
于 2012-10-03T17:36:14.390 回答
0

您可以将其转换为字符串,然后将字符串中的每个字符转换为数字。


myStr = str(myInt)
out = [int(i) for i in myStr]

于 2012-10-03T17:36:25.607 回答
0

通常不应在用户输入上使用eval 。有人可以键入一个将评估为恶作剧的语句。

出于同样的原因,您应该避免使用input(),因为它等同于eval(raw_input())也可能导致恶作剧——有意或无意。

但是,您可以使用ast.literal_eval安全地将用户输入的 Python 解释为 Python 数据结构:

>>> import ast
>>> ast.literal_eval(raw_input('Type Python input: '))
Type Python input: 1,2,3
(1, 2, 3)
>>> ast.literal_eval(raw_input('Type Python input: '))
Type Python input: [1,2,3]
[1, 2, 3]
>>> ast.literal_eval(raw_input('Type Python input: '))
Type Python input: 123
123
>>> ast.literal_eval(raw_input('type a number: '))
type a number: 0xab
171

(在每种情况下,后面的第一行>>> Type Python input:都是我在raw_input()

如果你想分开数字,你可以这样做:

>>> [int(c) for c in raw_input() if c in '1234567890']
1234
[1, 2, 3, 4]
>>> [int(c) for c in raw_input() if c in '1234567890']
123a45
[1, 2, 3, 4, 5]

请注意,非数字已被过滤。

于 2012-10-03T17:44:42.240 回答
0

首先,以下内容:

c = eval(input("Enter a group of numbers "))

是相同的:

c = eval(eval(raw_input("Enter a group of numbers ")))

所以你现在调用 eval 两次。更多关于输入的信息可以在这里找到。

这是您想要的可能的解决方案:

c = raw_input("Enter a group of numbers "))
c = [int(i) for i in c]
print(c)

您当然可以将上面的示例减少到两行(实际上甚至是一行)。

于 2012-10-03T17:42:58.750 回答