You can use indexing (for example obj[x]) to access or modify elements that already exist in list. For example, the following works because the positions in the list that we are referring to already exist:
>>> chars = ['a', 'b', 'c']
>>> chars[0]
'a'
>>> chars[0] = 'd'
>>> chars
['d', 'b', 'c']
However, accessing or changing elements in provisions that do not exist in list will not work :
>>> chars = ['a', 'b', 'c']
>>> chars[3]
...
IndexError: list index out of range
>>> chars[3] = 'd'
...
IndexError: list assignment index out of range
>>> chars
['a', 'b', 'c']
If you want to simplify your code try: (it uses list comprehension )
N = int(raw_input("N="))
l = [raw_input("e" + str(i) + "=") for i in range(N)]
print l