Fix Python – Why does this iterative list-growing code give IndexError: list assignment index out of range? How can I repeatedly add elements to a list?

Question

Asked By – Vladan

I tried writing some code like:

i = [1, 2, 3, 5, 8, 13]
j = []
k = 0

for l in i:
    j[k] = l
    k += 1

But I get an error message that says IndexError: list assignment index out of range, referring to the j[k] = l line of code. Why does this occur? How can I fix it?

Now we will see solution for issue: Why does this iterative list-growing code give IndexError: list assignment index out of range? How can I repeatedly add elements to a list?


Answer

j is an empty list, but you’re attempting to write to element [0] in the first iteration, which doesn’t exist yet.

Try the following instead, to add a new element to the end of the list:

for l in i:
    j.append(l)

Of course, you’d never do this in practice if all you wanted to do was to copy an existing list. You’d just do:

j = list(i)

Alternatively, if you wanted to use the Python list like an array in other languages, then you could pre-create a list with its elements set to a null value (None in the example below), and later, overwrite the values in specific positions:

i = [1, 2, 3, 5, 8, 13]
j = [None] * len(i)
#j == [None, None, None, None, None, None]
k = 0

for l in i:
   j[k] = l
   k += 1

The thing to realise is that a list object will not allow you to assign a value to an index that doesn’t exist.

This question is answered By – Steve Mayne

This answer is collected from stackoverflow and reviewed by FixPython community admins, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0