首页 > 解决方案 > 如何将一维列表转换为具有一些列数的二维列表?

问题描述

我想在 python 中将 1d 列表转换为 2d。我找到了一种使用 NumPy 的方法,但是当列表的长度不能被列数整除时,它会给出以下错误:

ValueError:无法将大小为 9 的数组重新整形为形状 (4)

在长度不可整除的情况下,我想添加 none 来填充空格。像这样:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
b = some_func(a)
print(b)

输出应该是:

[[1, 2, 3, 4], 
[5, 6, 7, 8], 
[9, None, None, None]] 

请帮我。我目前的代码是:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
a = numpy.reshape(a, (-1, 4))
print(a)

标签: pythonlist

解决方案


首先,您可以用None值填充列表,使其与大小匹配

reshape_size = 4
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
a += [None]*(reshape_size - len(a) % reshape_size) if len(a)%4 != 0 else []
a = numpy.reshape(a, (-1, reshape_size))
print(a)

推荐阅读