Python:按长度拆分数组

时间:2015-12-28 08:20:34

标签: python arrays

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

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 个答案:

答案 0 :(得分: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)]