+ 1

Need help with List qn

list1=[1,2] list2=list1 list3=list2[:] print(list1) print(list2) print(list3) #all lists print [1,2] a=list2 is list1 b=list3 is list1 print(a,b) #prints true, false #why is b false?

12th Dec 2019, 4:21 PM
Con John
Con John - avatar
4 Answers
+ 1
the third expression uses slice notation. A slice creates a whole new object - mostly just a part (slice) of the original, like [:2]. [:] is a shortcut for saying: Make a copy from this part of the list - this part being the whole thing. ;-) Anyways, list3 is a copy, a twin, of list2, so 'is' turns out False. list1 and list2 on the other hand, are only two different names for the very same thing. Like you call your father 'father', but your grandfather calls your father 'son', although it's the same person.
12th Dec 2019, 4:43 PM
HonFu
HonFu - avatar
+ 1
"is" returns True if and only if two objects have the same memory address. List 1 and 2 are the same list, only with an other name. List 3 is a new list, witchs holds copied items from list1, 2
12th Dec 2019, 4:43 PM
Coding Cat
Coding Cat - avatar
0
You can check the memory address with print(id(list1)) This must be the same for list1, 2
12th Dec 2019, 4:46 PM
Coding Cat
Coding Cat - avatar
0
Thanks for responding so fast and making it easy to understand!
12th Dec 2019, 8:23 PM
Con John
Con John - avatar