我有一个列表作为输入,如下所示:
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()
会是一个好方法吗?
答案 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)]