从具有给定长度和宽度的一维列表创建二维列表?

Create 2d list from 1d list with given length and width?

如何从具有给定行和列的一维列表创建二维列表?

鉴于:

sample_list=[5, 2, 3, 4, 1, 6, 1, 6, 7, 2, 3]

row=2
cols=4

应该return这个:

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

我不需要其他数字 = 7、2、3。 我只想要一个包含用户提供的行和列的列表。 我的解决方案没有return我想要的,

我的解决方案:

def 1D_to_2D(sample_list, row, cols):
    return [sample_list[i:i+cols] for i in range(0, len(sample_list), rows)]

returns:

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

有人可以帮忙吗?

只需使用 range 的列表理解和 cols 的步骤(而不是您使用的 rows )对列表进行切片,并使用外部切片限制项目的数量rows:

sample_list=[5, 2, 3, 4, 1, 6, 1, 6, 7, 2, 3]
rows=2
cols=4

result = [sample_list[x:x+cols] for x in range(0,len(sample_list),cols)][:rows]

结果:

[[5, 2, 3, 4], [1, 6, 1, 6]]
def D_to_2D(sample_list, rows, cols):
    return [sample_list[cols*i: cols*(i+1)] for i in range(rows)]

>>> D_to_2D([5, 2, 3, 4, 1, 6, 1, 6, 7, 2, 3], 2, 4)
[[5, 2, 3, 4], [1, 6, 1, 6]]
f = lambda x, row, cols: [x[i:i+cols] for i in range(0, cols*row, cols)]
f(x, row, cols)