[EMAIL PROTECTED] wrote:
> I'm trying to come up with a good algorithm to do the following:
>
> Given a list 'A' to be operated on, and a list 'I' of indices into
'A',
> rotate the i'th elements of 'A' left or right by one position.
Ok, here's what I've got. It seems to work right, but can it be
improved upon?
def list_rotate(A, I, direction=1):
A1 = [A[i] for i in I]
A2 = [A[i] for i in range(len(A)) if i not in I]
if direction:
I1 = [(i-1)%len(A) for i in I] # rotate left
else:
I1 = [(i+1)%len(A) for i in I] # rotate right
I2 = [i for i in range(len(A)) if i not in I1]
for i in range(len(I1)): A[I1[i]] = A1[i]
for i in range(len(I2)): A[I2[i]] = A2[i]
--
http://mail.python.org/mailman/listinfo/python-list