从具有定义维度的平面列表创建嵌套列表
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]]
我有一个平面列表,我想根据定义的维度将其转换为嵌套列表,平面列表的长度可以是任意的,但维度要满足列表的长度,例如
[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]]