如何将列表随机划分为n个几乎相等的部分?

25 投票
6 回答
47005 浏览
提问于 2025-04-16 01:57

我看过关于将列表切分成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() 这个函数来打乱列表的顺序。

撰写回答