0

Say I have

    x = [[0,0]]
    y = x[-1]

Then why does

    y[1] += 1

give

    x = [[0,1]]
    y = [0,1] 

That is, I'm confused as to why it also changes what x is, even though I only specified something to do with y?

Kevin
  • 27
  • 2

1 Answers1

0

This makes sense if you think of a list as a mutable object in memory and you consider that you're modifying that list.

The variables are simply different names for that same list.

That code is equivalent to:

list_obj = [0, 0]
x = [ list_obj ]    # a list with list_obj as
                    # its single element
y = list_obj        # same as x[-1], just
                    # another name for list_obj

Then it's natural that you're simply modifying list_obj[1] in both cases.

filbranden
  • 8,522
  • 2
  • 16
  • 32