The Lengthy Answer
Oversymplifyng the issue, the int builtin (follow the link to know the whole story) requires a single argument, either a numeric literal or a string.
Your code
>>> a=str(input('Voer een door spatie gescheiden lijst met getallen in: ').split())
is creating the textual representation of a list, because you use the str builtin that returns a textual representation of a python object:
>>> a
"['2', '3', '4', '5']"
The above is not the textual representation of a number, as required by int, but the textual representation of a list, so when you pass it to int it complains
ValueError: invalid literal for int() with base 10: "['2', '3', '4', '5']"
What if we omit the call to str?
>>> a = input('Voer een door spatie gescheiden lijst met getallen in: ').split()
>>> a
['2', '3', '4', '5']
>>> int(a)
TypeError: int() argument must be a string or a number, not 'list'
Note that the error message is different: no more a ValueError but a TypeError. We have a list, whose items are strings representing numbers, but we're not allowed to use the list as is as an argument to int.
Enter list comprehension, the contemporary idiom to manipulate the contents of a list (or of a generic iterable).
>>> [int(elt) for elt in a]
[2, 3, 4, 5]
The syntax is easy, [...] you have the opening and closing bracket, as you would write when using a list literal, and inside you have an inside-out loop, first the body of the loop and then the for specification. The results of the evaluation of the body are sequentially stored in a list, that the interpreter outputs for you, as you can see above we have no more strings representing numbers but integers. Assign the result of the list comprehension to a variable
>>> b = [int(elt) for elt in a]
and you're done:
>>> print(b)
[2, 3, 4, 5]
>>>
inputalready produces a string, sostr(input(...))is redundant.