Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #28258

Re: Changing a Value in List of lists

References <CANFKW=GubXQ8Q7Zr+6dZVp451xi381VhGQHaUZpb1YA9cDs7zA@mail.gmail.com>
Date 2012-09-02 19:57 +1000
Subject Re: Changing a Value in List of lists
From Chris Angelico <rosuav@gmail.com>
Newsgroups comp.lang.python
Message-ID <mailman.75.1346579861.27098.python-list@python.org> (permalink)

Show all headers | View raw


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

Back to comp.lang.python | Previous | Next | Find similar | Unroll thread


Thread

Re: Changing a Value in List of lists Chris Angelico <rosuav@gmail.com> - 2012-09-02 19:57 +1000

csiph-web