Posted By: Anonymous
Please consider the following code:
i = [1, 2, 3, 5, 8, 13] j =  k = 0 for l in i: j[k] = l k += 1 print j
The output (Python 2.6.6 on Win 7 32-bit) is:
> Traceback (most recent call last): > j[k] = l IndexError: list assignment index out of range
I guess it’s something simple I don’t understand. Can someone clear it up?
j is an empty list, but you’re attempting to write to element
 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.