Edward Finkelstein , what we have here is a slice on the left side of the expression, this is called slice assignment. just have a look at this line: lst[i:i] = [i] it means that the value of 'i' that is coming from the range object will be inserted at the lst[i:i] position. existing values are not overwritten but they will be moved to the right. for this case you can think about list.insert(). both codes give the same result lst = [1,2,3,4,5] for i in range(1,6): lst[i:i] = [i] print(lst) lst = [1,2,3,4,5] for i in range(1,6): lst.insert(i,i) print(lst) for more information have a look here: https://prosperocoder.com/posts/JUMP_LINK__&&__python__&&__JUMP_LINK/slice-assignment-in-python/ >>> watch also the video on this webpage, it demonstrates the use with some samples.
[i:i] is an empty list . Read it as the list between lst[i] and lst[i+1] Yeah... there is..... nothing. This nothing will be replaced by a list [i].
It appears to be slicing by the numbers in the list, sequentially... And placing a sequential number in while pushing the rest back. The initial element of a list is list_name So the 1 is untouched... But a 1 is placed afterward... After the first slice. Then slice at list drop in the 2... Then slice at list drop in 3... As it iterates. 1, (1, 2, 3, 4, 5), 2, 3, 4, 5
Hi, This code shows how to populate the list wih whatever values. I hope it helps lst = [1,2,3,4,5] for i in range(5): lst[i] = i+5 print(lst)
For slicing, lst = [1,2,3,4,5] for i in range(1,5): lst[i:i+4] = [i+1] print(lst)