Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何填写;“锯齿状”;列表_Python_List - Fatal编程技术网

Python 如何填写;“锯齿状”;列表

Python 如何填写;“锯齿状”;列表,python,list,Python,List,我有以下“锯齿状”python列表: lst = [[1, 'a', 2], ['b', 'c', 'd', 3, 4, 5], ['e']] 我想用0填充此列表中的“缺失”值,这样结果就是矩形数组: [[1, 'a', 2, 0, 0, 0], ['b', 'c', 'd', 3, 4, 5], ['e', 0, 0, 0, 0, 0]] 最好的方法是什么?使用itertools.zip\u longest,然后重新压缩结果 >>> lst = [[1, 'a', 2

我有以下“锯齿状”python列表:

lst = [[1, 'a', 2], ['b', 'c', 'd', 3, 4, 5], ['e']]
我想用0填充此列表中的“缺失”值,这样结果就是矩形数组:

[[1, 'a', 2, 0, 0, 0],
 ['b', 'c', 'd', 3, 4, 5],
 ['e', 0, 0, 0, 0, 0]]

最好的方法是什么?

使用
itertools.zip\u longest
,然后重新压缩结果

>>> lst = [[1, 'a', 2], ['b', 'c', 'd', 3, 4, 5], ['e']]
>>> from itertools import zip_longest
>>> [list(x) for x in zip(*zip_longest(*lst, fillvalue=0))]
[[1, 'a', 2, 0, 0, 0], ['b', 'c', 'd', 3, 4, 5], ['e', 0, 0, 0, 0, 0]]
zip(*t)
是一个众所周知的用于转换列表列表的习惯用法;同样的技巧也适用于
zip\u longest
。由于转置的转置是原始列表,因此将每个子列表填充到所需的长度


更详细地说,

>>> list(zip_longest(*lst, fillvalue=0))
[(1, 'b', 'e'), ('a', 'c', 0), (2, 'd', 0), (0, 3, 0), (0, 4, 0), (0, 5, 0)]

在这里,您可以看到第一个元素的元组,然后是第二个元素的元组,等等。当给定子列表中没有
i
th元素时,将使用
0

这可能对您的问题来说太难了,但可以有效地处理锯齿结构