2015-12-28 3 views
-2

У меня есть список в качестве входных данных, как это:Python: разбить массив по длине

lst = [1, 10, 100, 2, 20, 200, 3, 30, 300] 

Каждый три элемента является подгруппой, и я хочу, чтобы разделить их на подгруппы, например:

lst[0:3] # => [1,10,100] 
lst[4:6] # => [2,20,200] 
lst[7:9] # => [3,30,300] 

Каков элегантный способ сделать это?

Я считаю, только это: Split list into smaller lists

Я, безусловно, может достичь этого кода примерно, но это не дотягивает, когда вход приходит с большим количеством аргументов, как

lst = [1, 10, 100, 2, 20, 200, 3, 30, 300, 4, 40, 400, 5, 50, 500 ...] 

Я думаю, может быть reshape() бы Хороший путь?

ответ

1

со списком понимания:

[lst[i*3:(i+1)*3] for i in range(len(lst)/3)] 
# [[1, 10, 100], [2, 20, 200], [3, 30, 300], [4, 40, 400], [5, 50, 500]] 

Если вам нужен reshape() функцию:

def reshape(lst, n): 
    return [lst[i*n:(i+1)*n] for i in range(len(lst)/n)] 
Смежные вопросы