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]
Slice assignment is a little-used, beautiful Python feature to replace a slice with another sequence. Simply select the slice you want to replace on the left and the values to replace it on the right side of the equation.
Slicing lists does not generate copies of the objects in the list; it just copies the references to them. That is the answer to the question as asked.
List slicing returns a new list from the existing list. If Lst is a list, then the above expression returns the portion of the list from index Initial to index End, at a step size IndexJump.
As well as using slicing to extract part of a list (i.e. a slice on the right hand sign of an equal sign), you can set the value of elements in a list by using a slice on the left hand side of an equal sign. In python terminology, this is because lists are mutable objects, while strings are immutable.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With