snippetpythonCritical
Create an empty list with certain size in Python
Viewed 0 times
listwithpythonemptycreatesizecertain
Problem
How do I create an empty list that can hold 10 elements?
After that, I want to assign values in that list. For example:
However, that gives
After that, I want to assign values in that list. For example:
xs = list()
for i in range(0, 9):
xs[i] = i
However, that gives
IndexError: list assignment index out of range. Why?Solution
You cannot assign to a list like
Creating an empty list:
Assigning a value to an existing element of the above list:
Keep in mind that something like
range(x) creates a list from [0, 1, 2, ... x-1]
Using a function to create a list:
List comprehension (Using the squares because for range you don't need to do all this, you can just return
xs[i] = value, unless the list already is initialized with at least i+1 elements (because the first index is 0). Instead, use xs.append(value) to add elements to the end of the list. (Though you could use the assignment notation if you were using a dictionary instead of a list.)Creating an empty list:
>>> xs = [None] * 10
>>> xs
[None, None, None, None, None, None, None, None, None, None]Assigning a value to an existing element of the above list:
>>> xs[1] = 5
>>> xs
[None, 5, None, None, None, None, None, None, None, None]Keep in mind that something like
xs[15] = 5 would still fail, as our list has only 10 elements.range(x) creates a list from [0, 1, 2, ... x-1]
# 2.X only. Use list(range(10)) in 3.X.
>>> xs = range(10)
>>> xs
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]Using a function to create a list:
>>> def display():
... xs = []
... for i in range(9): # This is just to tell you how to create a list.
... xs.append(i)
... return xs
...
>>> print display()
[0, 1, 2, 3, 4, 5, 6, 7, 8]List comprehension (Using the squares because for range you don't need to do all this, you can just return
range(0,9) ):>>> def display():
... return [x**2 for x in range(9)]
...
>>> print display()
[0, 1, 4, 9, 16, 25, 36, 49, 64]Code Snippets
>>> xs = [None] * 10
>>> xs
[None, None, None, None, None, None, None, None, None, None]>>> xs[1] = 5
>>> xs
[None, 5, None, None, None, None, None, None, None, None]# 2.X only. Use list(range(10)) in 3.X.
>>> xs = range(10)
>>> xs
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> def display():
... xs = []
... for i in range(9): # This is just to tell you how to create a list.
... xs.append(i)
... return xs
...
>>> print display()
[0, 1, 2, 3, 4, 5, 6, 7, 8]>>> def display():
... return [x**2 for x in range(9)]
...
>>> print display()
[0, 1, 4, 9, 16, 25, 36, 49, 64]Context
Stack Overflow Q#10712002, score: 1380
Revisions (0)
No revisions yet.