Python ProgrammingPython Programming

Why does comparing strings using either '==' or 'is' sometimes produce a different result?

a = 'canada'
b = ''.join(['ca', 'na', 'da'])
print(a == b)
print(a is b)

a = [1, 2, 3]
b = [1, 2, 3]
print(a == b)
print(a is b)

c = b
print(c is b)
Output
True
False
True
False
True