Iain King wrote: > or shorter but possible less readable (and only in 2.4+): > > def shuffle(data): > return [y[1] for y in sorted([(random(), x) for x in data])]
sorted() and list.sort() will happily accept a key function argument and then do the decorating/undecorating for you: >>> from random import random >>> def key(item): return random() ... >>> def shuffled(items): ... return sorted(items, key=key) ... >>> shuffled(range(10)) [6, 5, 3, 4, 8, 9, 0, 7, 1, 2] > or in nicer python, but still when you're mysitified by map and lambda > (like me): Turning the key() function into a lambda is left as an exercise :-) Peter -- http://mail.python.org/mailman/listinfo/python-list