Obtener una lista de números como entrada del usuario

Intenté usar raw_input() para obtener una lista de números, sin embargo, con el código

 numbers = raw_input() print len(numbers) 

la entrada [1,2,3] da un resultado de 7 , así que supongo que interpreta la entrada como si fuera una cadena. ¿Hay alguna forma directa de hacer una lista de ella? Tal vez podría usar re.findall para extraer los enteros, pero si es posible, preferiría usar una solución más Pythonic.

En Python 3.x, usa esto.

 a = [int(x) for x in input().split()] 

Ejemplo

 >>> a = [int(x) for x in input().split()] 3 4 5 >>> a [3, 4, 5] >>> 

Es mucho más fácil analizar una lista de números separados por espacios en lugar de tratar de analizar la syntax de Python:

Python 3:

 s = input() numbers = list(map(int, s.split())) 

Python 2:

 s = raw_input() numbers = map(int, s.split()) 

eval(a_string) evalúa una cadena como código Python. Obviamente esto no es particularmente seguro. Puede obtener una evaluación más segura (más restringida) utilizando la función literal_eval del módulo ast .

raw_input() se llama a eso en Python 2.x porque obtiene una entrada en bruto, no “interpretada”. input() interpreta la entrada, es decir, es equivalente a eval(raw_input()) .

En Python 3.x, input() hace lo que raw_input() solía hacer, y debes evaluar los contenidos manualmente si eso es lo que quieres (es decir, eval(input()) ).

Puedes usar .split()

 numbers = raw_input().split(",") print len(numbers) 

Esto todavía le dará cadenas, pero será una lista de cadenas.

Si necesita asignarlos a un tipo, utilice la comprensión de lista:

 numbers = [int(n, 10) for n in raw_input().split(",")] print len(numbers) 

Si desea poder ingresar en cualquier tipo de Python y hacer que se asigne automáticamente y confía en que sus usuarios IMPLÍCITAMENTE , puede usar eval

Otra forma podría ser usar el bucle for para éste. Digamos que desea que el usuario ingrese 10 números en una lista llamada “memo”

 memo=[] for i in range (10): x=int(input("enter no. \n")) memo.insert(i,x) i+=1 print(memo) 
 num = int(input('Size of elements : ')) arr = list() for i in range(num) : ele = int(input()) arr.append(ele) print(arr) 

puedes pasar una representación de cadena de la lista a json:

 import json str_list = raw_input("Enter in a list: ") my_list = json.loads(str_list) 

el usuario ingresa en la lista como lo haría en python: [2, 34, 5.6, 90]

La respuesta es trivial. prueba esto.

x=input()

Supongamos que [1,3,5,'aA','8as'] se dan como entradas

print len(x)

esto da una respuesta de 5

print x[3]

esto da 'aA'

 a=[] b=int(input()) for i in range(b): c=int(input()) a.append(c) 

Los fragmentos de código anteriores son un método fácil para obtener valores del usuario.

Puede utilizar esta función (solo con tipo int);)

 def raw_inputList(yourComment): listSTR=raw_input(yourComment) listSTR =listSTR[1:len(listSTR)-1] listT = listSTR.split(",") listEnd=[] for caseListT in listT: listEnd.append(int(caseListT)) return listEnd 

Esta función devuelve su lista (con tipo int)!

Ejemplo:

 yourList=raw_inputList("Enter Your List please :") 

Si entras

 "[1,2,3]" 

entonces

 yourList=[1,2,3] 

prueba este

 n=int(raw_input("Enter length of the list")) l1=[] for i in range(n): a=raw_input() if(a.isdigit()): l1.insert(i,float(a)) #statement1 else: l1.insert(i,a) #statement2 

Si el elemento de la lista es solo un número, la instrucción 1 se ejecutará y si es una cadena, la instrucción 2 se ejecutará. Al final tendrás una lista l1 según lo necesites.

En Python 3:

 input_list = [int(x.strip()) for x in input("enter list:").strip()[1:-1].split(",")] 

Le pedirá que “ingrese a la lista”, así que simplemente ingrese a la lista como [2,4,5]

 (common_py3) PS E:\virtual_env_all\common_py3\Scripts> python Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 16:07:46) [MSC v.1900 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> input_list = [int(x.strip()) for x in input("enter list:").strip()[1:-1].split(",")] enter list:[2,4,5] >>> input_list [2, 4, 5] >>> type(input_list)  >>> 

Prueba esto:

 numbers = raw_input() numberlist = list(numbers) 
 k = [] i = int(raw_input('enter the number of values in the list ')) l = 0 while l < i: p = raw_input('enter the string ') k.append(p) l= l+1 print "list is ", k 

Solo necesita escribir raw_input().split() y la división predeterminada () es que los valores se dividen por un espacio en blanco.