I am unable to find anything on the official Python documentation whether L[a:b] = L[c:d] creates a new (temporary) list for L[c:d] before the in-place modification of L. The tutorial says that: All slice operations return a new list containing the requested elements. This does not say whether there is any optimization for slice assignment to another slice. So is there an officially specified behaviour, and what is it? Continue reading...