如何将列表随机划分为n个几乎相等的部分?
我看过关于将列表切分成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) ]
我想知道,如何修改这些解决方案,以便随机将项目分配到一个部分,而不是按顺序分配。
6 个回答
3
把输入的列表打乱顺序。
29
这是一个完整的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)]
注意! 这可能会改变你原来的列表
44
在把列表分成不同部分之前,先调用 random.shuffle()
这个函数来打乱列表的顺序。