card 1 of 12

>>> a = b = 5

>>> a == b

>>> a is b

the 'is' operator compares the origin of two things

True

True

card 2 of 12

>>> a = b = [0]

>>> a == b

>>> a is b

the 'is' operator compares the origin of two things

True

True

card 3 of 12

>>> a = [0]

>>> b = [5-5]

>>> a == b

>>> a is b

the 'is' operator compares the origin of two things

True

False

card 4 of 12

>>> a = 5

>>> b = 5

>>> a == b

>>> a is b

this might see like Python is wrong

True

True

card 5 of 12

>>> a = "five"

>>> b = "five"

>>> a == b

>>> a is b

this might see like Python is wrong

True

True

card 6 of 12

>>> a = {5:"five"}

>>> b = {5:"five"}

>>> a == b

>>> a is b

the 'is' operator compares the origin of two mutable variables

True

False

card 7 of 12

>>> a = b = {5:"five"}

>>> a == b

>>> a is b

the 'is' operator compares the origin of two mutable variables

True

True

card 8 of 12

>>> a = {5:"five"}

>>> b = {5:"five"}

>>> b[2] = "two"

>>> a

>>> b

>>> a == b

assignment can add an entry to a dictionary

{5:'five'}

{2:'two', 5:'five'}

False

card 9 of 12

>>> a = b = {5:"five"}

>>> b[2] = "two"

>>> a

>>> b

>>> a == b

if 'a is b' is True, then assignment to one assigns to the other

{2:'two', 5:'five'}

{2:'two', 5:'five'}

True

card 10 of 12

>>> a = b = [15,2,0]

>>> Evt = [a,100]

>>> Fvt = [b,500]

>>> Evt[0].append(-1)

>>> Fvt

surprise, but the same principle (about 'is') is at work

[[15,2,0,-1], 500]

card 11 of 12

>>> a = [15,2,0]

>>> b = a

>>> a == b

>>> a is b

>>> not a is b

assigning from an existing variable shares origin

True

True

False

card 12 of 12

>>> a = [15,2,0]

>>> b = a[:]

>>> a == b

>>> a is b

recall that the slice '[:]' is a copy of the entire list

True

False

The '[:]' produces a copy, but it does not have the same origin

(use browser reload to restart this problem set)