Posted By: Anonymous
I want to create an empty list (or whatever is the best way) that can hold 10 elements.
After that I want to assign values in that list, for example this is supposed to display 0 to 9:
s1 = list(); for i in range(0,9): s1[i] = i print s1
But when I run this code, it generates an error or in another case it just displays
Can someone explain why?
You cannot assign to a list like
lst[i] = something, unless the list already is initialized with at least
i+1 elements. You need to use append to add elements to the end of the list.
(You could use the assignment notation if you were using a dictionary).
Creating an empty list:
>>> l = [None] * 10 >>> l [None, None, None, None, None, None, None, None, None, None]
Assigning a value to an existing element of the above list:
>>> l = 5 >>> l [None, 5, None, None, None, None, None, None, None, None]
Keep in mind that something like
l = 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. >>> l = range(10) >>> l [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Using a function to create a list:
>>> def display(): ... s1 =  ... for i in range(9): # This is just to tell you how to create a list. ... s1.append(i) ... return s1 ... >>> 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
>>> def display(): ... return [x**2 for x in range(9)] ... >>> print display() [0, 1, 4, 9, 16, 25, 36, 49, 64]