List rotation

Peter Otten __peter__ at web.de
Thu Sep 30 09:22:09 CEST 2004


M. Clift wrote:

> If the list  ('a', 'd', 'b', 'a', 'd', 'c', 'b') was rotated once it would
> of course give('d', 'b', 'a' etc...
> 
> What I'm looking for is that say if trans = 1, then the list would become
> ('b', 'a', 'c', 'b', 'a', 'd', 'c') .
> For trans = 3 the list would be ('d', 'c', 'a', 'd', 'c', 'b', 'a')

def make_trans(items, n):
    return dict(zip(items, items[n:] + items[:n]))

def transform(items, trans):
    return [trans[item] for item in items]

for i in range(4):
    print "N =", i, transform("adbadcb", make_trans("abcd", i))

Is that it?

Peter





More information about the Python-list mailing list