You are confusing two distinct operation that use very similar syntax:
1) slicing:
b = a[0:2]
This makes a copy of the slice of a and assigns it to b.
2) slice assignment:
a[0:2] = b
This replaces the slice of a with the contents of b.
Although the syntax is similar (I imagine by design!), these are two different operations.