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



重要上下文:在esolang维基上挖掘

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

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

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

谢谢!

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

要将填充值应用于不均匀的列表,请使用 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 ]

最新更新