Эту проблему можно упростить с помощью нарезки индекса.
Если вы хотите создать n
списки примерно одинакового размера, вы можете сделать это:
def split_list(input_list, n):
output_lists = [input_list[i::n] for i in range(n)]
return output_lists
Это пошагово просматривает ваш входной список с шагом n
, чтобы получить необходимое количество выходных списков.
Например, скажем, ваш список ввода range(15)
, или [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]
, и вы хотите n=4
списки.
Это вернет [[0,4,8,12],[1,5,9,13],[2,6,10,14],[3,7,11]]
.
В качестве альтернативы, если вы хотите сгруппировать список ввода в n
списки вывода, сохраняя исходный порядок, вы можете сделать:
import math
def split_list(input_list, n):
group_size = int(math.ceil(len(input_list)/float(n)))
output_lists = [input_list[group_size*i:min((i+1)*group_size, len(input_list))] for i in range(n)]
return output_lists
Используя тот же пример, что и выше, вы получите [[0,1,2,3],[4,5,6,7],[8,9,10,11],[12,13,14]]
.