On Mon, Oct 11, 2010 at 9:24 AM, Fasihul Kabir <rrock...@yahoo.com> wrote: > a = [0]*5 > for i in range(0, 4): > for j in range(0, i): > a[i].append(j) > > why the above codes show the following error. and how to overcome it. > > Traceback (most recent call last): > File "<pyshell#10>", line 3, in <module> > a[i].append(j) > AttributeError: 'int' object has no attribute 'append'
`a` is a list of 5 zeroes (i.e. [0]*5 = [0, 0, 0, 0, 0]). Therefore, a[i] is an integer with a value of 0; integers cannot be appended to (the very concept makes no sense), hence your error. If you want a list-of-lists, use a list comprehension. For example: a = [[0]*5 for k in range(5)] Which gives: [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] I am now obligated to link you to the following, which describes a common related pitfall: http://effbot.org/pyfaq/how-do-i-create-a-multidimensional-list.htm Also, you probably want range(5) instead of range(0, 4) in your code. A 5-element list has indices 0 up to and including 4. range(5) produces the integers 0 to 4 inclusive. By contrast, range(0, 4) produces the integers 0 to 3 inclusive. If you want to perform mathematical matrix operations, you should use NumPy (or did they rename it to Numeric? I've lost track). Cheers, Chris -- http://blog.rebertia.com -- http://mail.python.org/mailman/listinfo/python-list