【发布时间】:2021-10-11 17:01:08
【问题描述】:
假设我在 Python 中有一个 3D 列表,但它严重锯齿状:
old_list = [[[0, 1, 2],
[3, 4, 5, 6],
[7, 8]],
[[9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18],
[19, 20, 21, 22]],
[[23, 24, 25],
[26, 27]]]
我需要“规范化”它,使其仍然具有相同的元素,但使用0 来填充锯齿状部分中的任何间隙。我的目标是这样的,即 3x4x5:
new_list = [[[0, 1, 2, 0, 0],
[3, 4, 5, 6, 0],
[7, 8, 0, 0, 0],
[0, 0, 0, 0, 0]],
[[9, 10, 0, 0, 0],
[11, 12, 13, 14, 15],
[16, 17, 18, 0, 0],
[19, 20, 21, 22, 0]],
[[23, 24, 25, 0, 0],
[26, 27, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]]]
对于任何个维度,是否有有效的算法来执行此操作?更好的是,无需导入任何东西?
更新 1:
我得到的答案还不错,但对于我的目的来说还不够好。对不起。但是我刚刚找到了解决问题的方法!不过,我需要做更多的编码。感谢您的回答!
更新 2:
BINGO! 无需再回答 - 我明白了。
【问题讨论】:
-
那些链接的重复项都是用于 Numpy 的;虽然 Numpy 可能对 OP 的整体问题有用,但似乎目标是使用内置列表来做到这一点。
-
OP:当您尝试编写代码来解决问题时发生了什么?您应该在这里尝试一下。
标签: python list multidimensional-array