相当于python 2.7.5中的eval()

时间:2013-10-21 08:56:48

标签: python python-2.7

我们可以使用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] 5L[1]7等等的每个值。

3 个答案:

答案 0 :(得分:7)

Python 2中的

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
...