如果列表中的列表长度小于,则用零填充列表

Rom*_*nts 1 python list

我有一个不同大小的列表列表,但我想让它们都具有相同的长度。例如,如果长度小于 5,则通过用零填充来使它们的长度为 5;如果长度大于 5,则剪切列表。例如,我有一个列表:

foo = [
    [1, 2, 3],
    [1, 2, 3, 4, 5],
    [1, 2, 3, 4, 5, 6, 7]]
Run Code Online (Sandbox Code Playgroud)
result = [
    [1, 2, 3, 0, 0],
    [1, 2, 3, 4, 5],
    [1, 2, 3, 4, 5]]
Run Code Online (Sandbox Code Playgroud)

如果列表列表很大,您是否有最佳且快速的解决方案的想法?

wja*_*rea 5

列表理解

制作一个填充列表并使用切片来获得适当的长度。

n = 5
fill = [0] * n
result = [sublist[:n] + fill[len(sublist):] for sublist in foo]
Run Code Online (Sandbox Code Playgroud)