views:

86

answers:

3

Hi,

I have read the answers to the Python: Slicing a list into n nearly-equal-length partitions question.

This is the accepted answer:

def partition(lst, n): 
    division = len(lst) / float(n) 
    return [ lst[int(round(division * i)): int(round(division * (i + 1)))] for i in xrange(n) ]

I am wondering, how does one modify these solutions in order to randomly assign items to a partition as opposed to incremental assignment.

Thanks, S :-)

+10  A: 

Call random.shuffle() on the list before partitioning it.

bobince
+1  A: 

shuffle input list.

SilentGhost
That absolutely makes sense. I really should have figured this out. Alas, the 10,000 hour rule is probably true :-(
Seafoid
+1  A: 

First you randomize the list and then you split it in n nearly equal parts.

Teodor Pripoae