# Get a list of numbers as input from the user

Posted on

Solving problem is about exposing yourself to as many situations as possible like Get a list of numbers as input from the user and practice these strategies over and over. With time, it becomes second nature and a natural way you approach any problems in general. Big or small, always start with a plan, use other strategies mentioned here till you are confident and ready to code the solution.
In this post, my aim is to share an overview the topic about Get a list of numbers as input from the user, which can be followed any time. Take easy to follow this discuss.

Get a list of numbers as input from the user

I tried to use `raw_input()` to get a list of numbers, however with the code

``````numbers = raw_input()
print len(numbers)
``````

the input `[1,2,3]` gives a result of `7`, so I guess it interprets the input as if it were a string. Is there any direct way to make a list out of it? Maybe I could use `re.findall` to extract the integers, but if possible, I would prefer to use a more Pythonic solution.

In Python 3.x, use this.

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

## Example

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

It is much easier to parse a list of numbers separated by spaces rather than trying to parse Python syntax:

Python 3:

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

Python 2:

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

`eval(a_string)` evaluates a string as Python code. Obviously this is not particularly safe. You can get safer (more restricted) evaluation by using the `literal_eval` function from the `ast` module.

`raw_input()` is called that in Python 2.x because it gets raw, not “interpreted” input. `input()` interprets the input, i.e. is equivalent to `eval(raw_input())`.

In Python 3.x, `input()` does what `raw_input()` used to do, and you must evaluate the contents manually if that’s what you want (i.e. `eval(input())`).

You can use `.split()`

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

This will still give you strings, but it will be a list of strings.

If you need to map them to a type, use list comprehension:

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

If you want to be able to enter in any Python type and have it mapped automatically and you trust your users IMPLICITLY then you can use `eval`

Another way could be to use the for-loop for this one.
Let’s say you want user to input 10 numbers into a list named “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)
``````

you can pass a string representation of the list to json:

``````import json
str_list = raw_input("Enter in a list: ")
``````

user enters in the list as you would in python: `[2, 34, 5.6, 90]`

``````a=[]