Hi, I got it :). We should create a new list every time before adding to a list of list so that instead repeating the reference a new reference generated every time.
>>> mat=[[0]*5 for i in range(5)] >>> mat[1][2]+=1 >>> mat [[0, 0, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] This worked for me!! Thanx :) On Sun, Sep 2, 2012 at 4:30 PM, Rishabh Dixit <rishabhdixi...@gmail.com>wrote: > Hi Chris, > > Thanks for your reply. I tried this - > > >>> ls=[0 for i in range(5)] > >>> mat=[ls for i in range(5)] > >>> mat[1][2]+=1 > >>> mat > [[0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, > 0, 1, 0, 0]] > > I guess here also the same issue is there as ls refers to one list that is > being repeated through mat and change in one causes change in others also. > > Is there any solution to change all elements independently. > > > > On Sun, Sep 2, 2012 at 3:14 PM, Rishabh Dixit <rishabhdixi...@gmail.com>wrote: > >> >> Hi all, >> >> I have a doubt regarding how the list work in following case- >> >> >>> ls=[[0]*5]*5 >> >>> ls[1][1]+=1 >> >>> ls >> [[0, 1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 1, 0, 0, 0], [0, 1, 0, 0, 0], [0, >> 1, 0, 0, 0]] >> >> >> Here, according to me only one value in ls should be incremented but it >> is increasing 1 value in all the lists of ls. Why?? >> -- >> Regards, >> Rishabh Dixit >> MSc.(Tech) Information Systems, >> BITS Pilani >> >> > > > -- > Regards, > Rishabh Dixit > MSc.(Tech) Information Systems, > BITS Pilani > > -- Regards, Rishabh Dixit MSc.(Tech) Information Systems, BITS Pilani
-- http://mail.python.org/mailman/listinfo/python-list