+ 1
Plz explain how 10 is the output when we have to print the sum of list1
def guess(list1): list2=list1 list2.append(4) list1=[5,6,7] list1 = [1,2,3] guess(list1) print (sum(list1))
3 Answers
+ 3
list2 is just another name for list1.
Then you give the name list1 to a new list.
the original list still exists under another name, and it's the one that is actually changed.
1+2+3+4==10
+ 2
Santiago Pavoni, this is not the decisive factor.
Look at this variation of the code:
def guess(list1):
list2=list1
list2.append(4)
list1=[5,6,7]
abc = [1,2,3]
guess(abc)
print (sum(abc))
If you try this, the effect will still be the same.
No, the point is that list2 is just another name for list1, and list1 is just another name for abc.
3 names, but only one list! That's why you can still print it on the outside.
list1 = [5, 6, 7] strips the name list1 off the original object and sticks it to a completely new list.
So what you do with this list, has no effect on that other list.
+ 1
I guess it's because list1 is in global scope and list2 is in local scope. Bue i'm not sure