Python - случайное разбиение списка на n почти равных частей - PullRequest
8 голосов
/ 28 июля 2010

Я прочитал ответы на 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) ]

Мне интересно, как можно изменить эти решения, чтобы случайным образом назначать элементы разделу, а не инкрементному назначению.

Спасибо, S: -)

Ответы [ 4 ]

21 голосов
/ 28 июля 2010

Вызовите random.shuffle() в списке перед его разбиением.

3 голосов
/ 14 августа 2018

Полное решение 2018 года (pytyon 3.6):

import random 
def partition (list_in, n):
    random.shuffle(list_in)
    return [list_in[i::n] for i in range(n)]

Осторожно! это может изменить ваш первоначальный список

1 голос
/ 28 июля 2010

список ввода в случайном порядке.

0 голосов
/ 28 июля 2010

Сначала вы рандомизируете список, а затем разбиваете его на n почти равных частей.

...