I'm not sure I'm reading your question correctly. Sorry for that. But your code shows something surprising in Python. This is fairly expected:
>>> a = 4534534
>>> b = 4534534
>>> a is b
False
Python created two separate objects. That's the way Python usually works.
>>> a = 1
>>> b = 1
>>> a is b
True
What? Well, as an optimization Python shares small integers from a pool so they will have the same id.
Is that what you were trying to ask about?
If you write:
m = list[:]
A shallow copy of list is made and assigned to m. The object id's of the lists will be different while the object ids of the contents will be the same. Your list contains ints, which are are immutable so the values in your original list can not be changed by reference to a copy of the list. However when a list contains mutable values (such as objects, dicts, or even other lists) then modification to a shared mutable item in the list will be reflected in the original list.
The // operator causes the result to be rounded down to the nearest integer. Type is maintained though, so if one of the arguments is float, the result will be float.
That depends on what your definition of is is
a[0] is b[0]
is
returns True when the objects are the same, that means the id's (think pointers) are the same. False is returned when the objects are different. The values may or may not be the same when the id's are different. If you want to test if values are the same (which is much more common) use ==.
Good luck, I hope this helps.