Si tenemos una lista de elementos, por ejemplo:
>>> l = [ 2, 3, 5, 7, 11, 13, 17, 19 ]
Y queremos desordenarla, pero con la condición de que ningún elemento ocupe la misma posición que ocupaba originalmente, podemos aplicar el algoritmo de Sottolo:
>>> from random import randrange
>>> def sattoloCycle(items):
... i = len(items)
... while i > 1:
... i = i - 1
... j = randrange(i) # 0 < = j <= i-1
... items[j], items[i] = items[i], items[j]
... return
>>> sattoloCycle(l)
>>> print l
[5, 17, 3, 2, 7, 11, 13]