均衡列表中所有列表的长度? (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
[['#', '#', ' '], ['#', '#', '#']]
重要背景: 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
[['#', '#', ' '], ['#', '#', '#']]