Issue 22124: Rotating items of list to left (original) (raw)

Hi, I am trying to rotate list of 3 to left for this I am trying to define this function def rotate_left3(nums)

#argument nums is list for example rotate_left3([1, 2, 3]) I am expecting value [2,3,1] in return. I have written the following code a = nums a[0]=nums[1] a[1]=nums[2] a[2]=nums[0] return a #this is returning [2,3,2] instead of [2,3,1] however if I assign a = [0,0,0] #or any other value other than directly assigning nums the code works perfectly

This is not a bug. The assignment "a = nums" doesn't create a copy of "nums", it just assigns the name "a" to the same object that "nums" refers to. Since lists are mutable, changes made to "a" are visible through the name "nums". By the time you do "a[2] = nums[0]", "nums[0]" has been reassigned.

Have a look at this article: http://nedbatchelder.com/text/names.html

Also, you may want to look at collections.deque and its rotate method.