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では動作しません

データをリストとして入力し、Python 2.7 を使用して、各値をis 、isなど[5,7,9] として取得したい。L[0]5L[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]でください。引用符がないだけでは、有効な Python 文字列リテラルではありません。 a

于 2013-10-21T08:58:11.070 に答える
0

Martijn の正しい re: 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

Just use input in 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 に答える