Changing a Value in List of lists

Chris Angelico rosuav at gmail.com
Sun Sep 2 05:57:37 EDT 2012


On Sun, Sep 2, 2012 at 7:44 PM, Rishabh Dixit <rishabhdixit11 at 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??

When you take the list [[0,0,0,0,0]] and multiply it by 5, you get a
list with five references to the same inner list. That's where the
confusion is coming from. Then when you change one of them, it changes
all five displayed versions, since they're all still the same list.

ChrisA



More information about the Python-list mailing list