重要上下文:在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 ]