1

我们可以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

4

3 回答 3

7

input()在 Python 2 中已经适用eval()

Python 3input()是 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 字符串文字。

于 2013-10-21T08:58:11.070 回答
0

Martijn 的正确回复:raw_input/ input- 但值得注意的是,在您的示例中应该首选的方法是为了更安全地评估简单文字:

from ast import literal_eval
L = literal_eval(raw_input('Enter a list: ')) # or `input` for Python 3.x
于 2013-10-21T09:01:04.113 回答
0

只需 input在 python 2.7.5 中使用

lst = input("Enter a list:")  
>> [1,2,3]  # lst = [1,2,3]

lst[0]  # 5
lst[1]  # 7
...
于 2013-10-21T09:01:23.507 回答