0

重要背景: 在 esolang wiki 上挖掘

我正在为深奥的编程语言制作编译器,使用 2d 列表来说明语言的 2d 性质。当我需要一个巨型列表中的所有列表长度相同时,问题就来了。

这: [[“#”,”#”],[“#”,”#”,”#”]]

需要是这样的: [[“#”,”#”,” “],[“#”,”#”,”#”]]

谢谢!

4

3 回答 3

1

要将填充值应用于不均匀列表,请使用 itertools.zip_longest 函数。

import itertools as it

lists = [[1,2,3],[4,5]]
lists = list(zip(*it.zip_longest(*lists,fillvalue=' ')))
print(lists)
于 2020-05-19T19:25:50.000 回答
1
>>> mega_list = [["#","#"],["#","#","#"]]
>>> for a in mega_list:
...     a.extend([" "] * (max(map(len, mega_list)) - len(a)))
...
>>> mega_list
[['#', '#', ' '], ['#', '#', '#']]
于 2020-05-19T19:26:19.487 回答
0

您可以这样做,首先找到列表的最大长度:

max_length = max( len(i) for i in l)
[ i + [" "]*(max_length-len(i)) for i in l ]
于 2020-05-19T19:26:04.187 回答