均衡列表中所有列表的长度? (Python)

Equalizing the lengths of all the lists within a list? (Python)

重要背景: Dig on the esolang wiki

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

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

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

谢谢!

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

import itertools as it

lists = [[1,2,3],[4,5]]
lists = list(zip(*it.zip_longest(*lists,fillvalue=' ')))
print(lists)

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

max_length = max( len(i) for i in l)
[ i + [" "]*(max_length-len(i)) for i in l ]
>>> mega_list = [["#","#"],["#","#","#"]]
>>> for a in mega_list:
...     a.extend([" "] * (max(map(len, mega_list)) - len(a)))
...
>>> mega_list
[['#', '#', ' '], ['#', '#', '#']]