从具有定义维度的平面列表创建嵌套列表

creating a nested list from flat list with defined dimension

我有一个平面列表,我想根据定义的维度将其转换为嵌套列表,平面列表的长度可以是任意的,但维度要满足列表的长度,例如

[0,1,2,3,4,5,6,7]

将生成一个嵌套列表

m = 2
n = 4
[[0,1][2,3][4,5][6,7]]

m = 4
n = 2
[[0,1,2,3][4,5,6,7]]

我正在考虑使用列表理解来生成嵌套列表,但其他选项也可以从平面列表中附加元素

a = [[i] * m for i in range(n)]

这是使用列表理解的一种选择:

col = list(range(10))
[
    col[col.index(val):col.index(val) + m]
    for val in col[::len(col)//n]
]

你可以试试这个:

m = 2
n = 4
nums = [i*m for i in range(1,n+1)]
[list(range(x,y)) for x, y in  zip([0] + nums, nums)]

nums = [i*m for i in range(n)]
[list(range(z,z+m)) for z in (nums)]

输出:

[[0, 1], [2, 3], [4, 5], [6, 7]]

对于

m = 4
n = 2

输出:

[[0, 1, 2, 3], [4, 5, 6, 7]]