2015-12-28 83 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)]