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