## Onyx 4 years ago How would I write the definition for this def shift(my_list): "Shifts the list [x1,x2,...,xn] to [x2,x3,...,xn,x1]."

1. Onyx

If you don't get what i am trying to do, i am defining a function that will shift the list to the right moving the first element to the end.

2. Aslander

You can try this - it may not be pretty, but it works. I threw in print statements so you could see whats happening. def shifting(): a = [1,2,3,4] for i in range(5): print "Original List:", a b = a[1:] b.append(a[0]) print "Ammended List:", b print a = b

3. Aslander

You could do it just once, or as many times as you wish, by changing the range(x).

4. Onyx

I am using the second one right now but it is a little confusing because there giving us problems they never taught like the one i asked you. So i was wondering if the one for this study board is better?

5. Aslander

I don't know the other course...sorry.

6. Onyx

Oh okay but have you had any problems with the course your using. Where the stuff asked for hasn't been taught or is it a good course?

7. Aslander

It is a very good course so far. So far, everything matches up quite good. Of course you need to do extra reading for some things, but that is to be expected from a free online course. The teacher-pupil aspect does not exist, so you need to be willing to work a little, and be autonomous.

8. Onyx

Thank You

9. Keen

def shift(aList) aList.append(aList[0]) del aList[0] return aList

10. Aslander

nice!

11. Keen

:) I'm really warming to lists.

12. Onyx

Thank You. I actually came up with the exact same script last night. I guess i was just cramming my brain too much because i took an hour break. Then I laid down and as I was laying down going to sleep i was like wouldn't it be easier to just take the first element and move to end using append then delete the first.

13. polpak

A couple of things to consider.. Do you wish to modify the list in place, or return a new list constructed by shifting the old one. In general I would recommend the latter since it has fewer side effects. #does not modify def shift(thelist): return thelist[1:] + thelist[0] #modifies def inplace_shift(thelist): thelist.append(thelist.pop(0))

14. Aslander

Oh that's nice polpak! I hadn't thought about how it would modify (or not) the list...I tried to break down Keen's function but found it really hard, now with your input I am thinking about how much I don't know about programming, :-) and I think I will try simplifying my own work. Thanks!

Find more explanations on OpenStudy