I am confused by python's handling of pointers. For example:

```
a=[3,4,5]
b=a
a[0]=10
print a

```

returns [10, 4, 5]

The above would indicate that b and a are pointers to the same location. The issue is what if we say:

```
a[0]='some other type'

```

b now equals ['some other type', 4, 5]

This is not the behavior I would expect as python would have to reallocate the memory at the pointer location due to the increase in the size of the type. What exactly is going on here?