Я прочитал ответы на 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: -)
Вызовите random.shuffle() в списке перед его разбиением.
random.shuffle()
Полное решение 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)]
Осторожно! это может изменить ваш первоначальный список
список ввода в случайном порядке.
Сначала вы рандомизируете список, а затем разбиваете его на n почти равных частей.