Python - 随机将列表分成几乎相等的n个部分

Dar*_*ick 11 python random slice

我已经阅读了Python的答案:将列表切成n个近似等长的分区问题.

这是公认的答案:

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) ]
Run Code Online (Sandbox Code Playgroud)

我想知道,为了将项目随机分配给分区而不是增量分配,如何修改这些解决方案.

谢谢,S :-)

bob*_*nce 24

random.shuffle()在分区之前调用列表.


Eri*_*ulz 9

完整的2018解决方案(python 3.6):

import random 
def partition (list_in, n):
    random.shuffle(list_in)
    return [list_in[i::n] for i in range(n)]
Run Code Online (Sandbox Code Playgroud)

谨防!这可能会改变您的原始列表