Python:按长度拆分数组

cqc*_*991 -1 python arrays

我有一个列表作为输入,如下所示:

lst = [1, 10, 100, 2, 20, 200, 3, 30, 300]
Run Code Online (Sandbox Code Playgroud)

每三个元素是一个子组,我想将它们分成子组,如下所示:

lst[0:3] # => [1,10,100]
lst[4:6] # => [2,20,200]
lst[7:9] # => [3,30,300]
Run Code Online (Sandbox Code Playgroud)

这样做的优雅方式是什么?

我只发现这个:Split list into small lists

我当然可以通过代码实现这一点,但是当输入带有更多参数时,这会不足,比如

lst = [1, 10, 100, 2, 20, 200, 3, 30, 300, 4, 40, 400, 5, 50, 500 ...]
Run Code Online (Sandbox Code Playgroud)

我想也许reshape()会是一个好方法?

Dai*_*arf 5

使用列表理解:

[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]]
Run Code Online (Sandbox Code Playgroud)

如果你需要一个reshape()函数:

def reshape(lst, n):
    return [lst[i*n:(i+1)*n] for i in range(len(lst)//n)]
Run Code Online (Sandbox Code Playgroud)