我们可以使用eval(input())
来允许用户在python3中输入列表
这是一个例子:
L = eval(input('Enter a list: '))
print('The first element is ', L[0])
Enter a list: [5,7,9]
The first element is 5
但eval()
无法在python2.7中运行
我想将数据作为列表[5,7,9]
输入
并希望使用python 2.7将L[0]
5
,L[1]
为7
等等的每个值。
答案 0 :(得分:7)
input()
已经适用eval()
。
Python 3 input()
是Python 2的raw_input()
,已重命名。在Python 2中,input()
与eval(raw_input())
相同:
L = input('Enter a list: ') # includes a call to `eval()` in Python 2
然而,更好的选择是使用ast.literal_eval()
代替;它只允许Python文字,而eval()
允许任意 Python表达式。对于带有数字的列表输入,ast.literal_eval()
是充足的,并且不对安全问题持开放态度:
from ast import literal_eval
L = literal_eval(raw_input('Enter a list: ')) # safe alternative to eval
请注意,您仍然需要传入有效的Python文字;使用['a', 4, 7]
,不 [a, 4, 7]
; 只是 a
没有引号不是有效的Python字符串文字。
答案 1 :(得分:0)
Martijn的正确答案:raw_input
/ input
- 但值得注意的是,对于您更简单文字的更安全评估的示例,这两种方法都应该首选:
from ast import literal_eval
L = literal_eval(raw_input('Enter a list: ')) # or `input` for Python 3.x
答案 2 :(得分:0)
在python 2.7.5中使用input
lst = input("Enter a list:")
>> [1,2,3] # lst = [1,2,3]
lst[0] # 5
lst[1] # 7
...