+ 1

In python why 'is' cmd returns different values for below scenarios?

If a,b=[0],[0] ,when user performs 'a is b' returns False.But when user does a,b=0,0 and performs 'a is b' returns 'True'

19th Aug 2018, 1:55 PM
Deepak Jayaprakash
Deepak Jayaprakash - avatar
3 Answers
+ 4
The memory id's are different. ''' a,b=[0],[0] #creates 2 separate lists print(id(a), id(b)) a,b=0,0 #a=0 & b=0 print(id(a), id(b)) ''' Lists can have the same values, but different places in memory. However when variables are created and then given a specific value, a place in memory is created. If another variable with the same value is created, the place in memory is assigned to that variable. Lists behave differently and each list is given a different place in memory. The "is" operator is comparing memory location, hence,the id() method, which finds the objects memory location
19th Aug 2018, 2:03 PM
Steven M
Steven M - avatar
+ 3
'is' checks if they are pointing at the same object. if you did a = b and did a is b it would return true. if you need to compare values you should use ==
19th Aug 2018, 2:05 PM
Markus Kaleton
Markus Kaleton - avatar
+ 1
[meta, in support of other answers only] # print id's a,b=[0],[0] print(id(a), id(b), id(a[0]), id(b[0]), id(0), sep="\n") 16795048 # a, the list 16796208 # b, the list 1876965616 # a[0], having the value 0 1876965616 # b[0], having the value 0 1876965616 # 0, the value Perplexed? In Python, even numbers are objects: print(dir(0)) ['__abs__', '__add__', ... ]
19th Aug 2018, 4:01 PM
Kirk Schafer
Kirk Schafer - avatar