Python 2 raw_input到列表类型

时间:2016-11-17 14:04:30

标签: python-2.7 list input raw-input

我在程序中使用了input()来将输入转换为列表类型,但我读到我应该使用raw_input()代替。

我试图让用户以(4,4),(2,5),(1,6)的形式输入向量 使用input()就可以了。

我用过:

vectors = list(input('enter vectors\n'))

将其更改为raw_input()后,我得到一个包含str

中所有元素的列表
'(' '4' ',' '4' ')' ',' '(' '2' ',' '5' ')' ',' '(' '1' ',' '6' ')'

如何将输入转换为我将获得的列表,就像我使用input()一样? 我应该回去使用input()吗?

2 个答案:

答案 0 :(得分:0)

假设您以1,2格式输入数据,这可以完成您的工作:

vectors = []
print ('enter vectors')
while True:
    a = raw_input('')
    if a == 'q':
        break
    else:
        vectors.append(tuple(int(c) for c in a.split(',')))

print vectors

答案 1 :(得分:0)

您在raw_input之后切换到input是正确的。正如this问题中所述,input需要raw_input而不是执行eval,如果来自不受信任的来源,这通常是不好的做法和不安全。

要在使用raw_input时实现您的目标,您可以使用ast模块

import ast

vector = raw_input('Enter Vector:')
vector = list(ast.literal_eval(vector))
print vector

>>> [(4, 4), (2, 5), (1, 6)]