How does assignment work with list slices?

list, python, slice

Solution

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.

Problem

Python docs says that slicing a list returns a new list. Now if a "new" list is being returned I've the following questions related to "Assignment to slices" ``` a = [1, 2, 3] a[0:2] = [4, 5] print a ``` Now the output would be: ``` [4, 5, 3] ``` - How can something that is returning something come on the left side of expression? - Yes, I read the docs and it says it is possible, now since slicing a list returns a "new" list, why is the original list being modified? I am not able to understand the mechanics behind it.

Original source

Related problems