Question
Asked By – Kartik Anand
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.
Now we will see solution for issue: How does assignment work with list slices?
Answer
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.
This question is answered By – NPE
This answer is collected from stackoverflow and reviewed by FixPython community admins, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0