Just in case anyone else takes an interest in this,
This is not a bug per se, but rather a quirk in the design. Apparently, the * operator, when applied to lists, uses shallow-copy (which just copies references, and not the objects themselves). Since [0,0] is a proper list object, it's reference just gets copied, so you actually get a list of two references to the same object. (Think of it like a=[0,0]; h = [a]*2; a[0]=1; => h will be equal [[1,0],[1,0]] now)
Even if I'm totally wrong about the mechanics, one thing is certian:
h[0] is h[1]
resutls in True, i.e., h[0] and h[1] are the same object. (But if h=[[0,0],[0,0]] then h[0] is h[1] evaluates in False.)
This is not a problem with immutable objects, methinks.