Felipe I get the same results as you. You make a good point about not iterating when it's not needed. I played around with your test code and found some interesting things:
1. enumerate vs. range(len()) has very little overhead (something I have wondered about) In my code, making the change causes the timing to go from 27.5 usec to 24.6 usec: basically nothing. 2. I combined the two result statements into one, and your code as written still appears consistently faster, albeit only slightly: One-line assignment to result: 6.98; 7.18; 6.49; 7.1 (code below) Your way via extend: 5.24; 5.26; 5.09; 5.3; 5.26; 5.21 (code further below) Is this because of "+" concatenation? My one-line assignment to result: [EMAIL PROTECTED] ~]$ python2.4 -mtimeit -s "def shift(lst, n): length = len(lst); first =(-n) % length; result = list(lst[first:]) + list(lst[:first]); return result" "shift('abcdefghijklmnopqrstuvwxyz',2)" 100000 loops, best of 3: 6.98 usec per loop [EMAIL PROTECTED] ~]$ python2.4 -mtimeit -s "def shift(lst, n): length = len(lst); first =(-n) % length; result = list(lst[first:]) + list(lst[:first]); return result" "shift('abcdefghijklmnopqrstuvwxyz',2)" 100000 loops, best of 3: 7.18 usec per loop [EMAIL PROTECTED] ~]$ python2.4 -mtimeit -s "def shift(lst, n): length = len(lst); first =(-n) % length; result = list(lst[first:]) + list(lst[:first]); return result" "shift('abcdefghijklmnopqrstuvwxyz',2)" 100000 loops, best of 3: 6.49 usec per loop [EMAIL PROTECTED] ~]$ python2.4 -mtimeit -s "def shift(lst, n): length = len(lst); first =(-n) % length; result = list(lst[first:]) + list(lst[:first]); return result" "shift('abcdefghijklmnopqrstuvwxyz',2)" 100000 loops, best of 3: 7.1 usec per loop Your code: [EMAIL PROTECTED] ~]$ python2.4 -mtimeit -s "def shift(lst, n): length = len(lst); first =(-n) % length; result = list(lst[first:]); result.extend(lst[:first]); return result" "shift('abcdefghijklmnopqrstuvwxyz',2)" 100000 loops, best of 3: 5.24 usec per loop [EMAIL PROTECTED] ~]$ python2.4 -mtimeit -s "def shift(lst, n): length = len(lst); first =(-n) % length; result = list(lst[first:]); result.extend(lst[:first]); return result" "shift('abcdefghijklmnopqrstuvwxyz',2)" 100000 loops, best of 3: 5.26 usec per loop [EMAIL PROTECTED] ~]$ python2.4 -mtimeit -s "def shift(lst, n): length = len(lst); first =(-n) % length; result = list(lst[first:]); result.extend(lst[:first]); return result" "shift('abcdefghijklmnopqrstuvwxyz',2)" 100000 loops, best of 3: 5.09 usec per loop [EMAIL PROTECTED] ~]$ python2.4 -mtimeit -s "def shift(lst, n): length = len(lst); first =(-n) % length; result = list(lst[first:]); result.extend(lst[:first]); return result" "shift('abcdefghijklmnopqrstuvwxyz',2)" 100000 loops, best of 3: 5.3 usec per loop [EMAIL PROTECTED] ~]$ python2.4 -mtimeit -s "def shift(lst, n): length = len(lst); first =(-n) % length; result = list(lst[first:]); result.extend(lst[:first]); return result" "shift('abcdefghijklmnopqrstuvwxyz',2)" 100000 loops, best of 3: 5.26 usec per loop [EMAIL PROTECTED] ~]$ python2.4 -mtimeit -s "def shift(lst, n): length = len(lst); first =(-n) % length; result = list(lst[first:]); result.extend(lst[:first]); return result" "shift('abcdefghijklmnopqrstuvwxyz',2)" 100000 loops, best of 3: 5.21 usec per loop Caleb -- http://mail.python.org/mailman/listinfo/python-list