2016-11-17 71 views
0

我在我的程序中使用input()将输入转换为列表类型,但我读到应该使用raw_input()来代替。 (),(2,5),(1,6) 使用input()它的工作。Python 2 raw_input列表类型

我用:

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

改变它的raw_input()我得到的STR所有元素

'(' '4' ',' '4' ')' ',' '(' '2' ',' '5' ')' ',' '(' '1' ',' '6' ')' 

我怎样才能获得输入转换成列表我会名单后得到,如果我用输入()? 我应该回去使用input()吗?

+0

ü应该得到什么?输出 –

+0

'raw_input()'返回一个字符串。在'str'上做'list'会创建一个你正在得到的字符列表。 –

+0

只需使用input()。 –

回答

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 
0

你是对过度input切换到raw_input。如this问题中所解释的,inputraw_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)] 
+0

这个作品很好谢谢 – malaki

+0

我只注意到,如果我只输入一个元组像(3,6) [3,6] 但我需要[(3,6)]作为输出 如果我输入2,例如(3,6),(4,7)我得到[(3,6),(4, 7)]我怎么能得到这种格式的第一个? [(3,6)]? – malaki