You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python:如何为不同长度行的列表左侧补0填充?

解决列表左侧补0对齐的问题

嘿,这个需求其实挺常见的,我给你几个实用的解决方案,你可以根据自己的使用场景来选:

1. 纯Python原生实现(无需额外库)

这种方法最直接,不需要依赖任何第三方库,适合处理小规模数据:

mylist = [[1],[1,2],[1,2,3]]
# 先找到所有子列表里的最大长度
max_length = max(len(sublist) for sublist in mylist)
# 对每个子列表左侧补0,再拼接原列表
padded_list = [[0]*(max_length - len(sublist)) + sublist for sublist in mylist]

print(padded_list)
# 输出: [[0, 0, 1], [0, 1, 2], [1, 2, 3]]

2. Numpy高效实现(适合大数据量)

如果你已经在使用Numpy处理数据,用np.pad函数可以更高效地完成左侧补0:

import numpy as np

mylist = [[1],[1,2],[1,2,3]]
max_length = max(len(sublist) for sublist in mylist)
# 对每个子数组执行左侧补0操作
padded_arrays = [np.pad(sublist, pad_width=(max_length - len(sublist), 0), mode='constant', constant_values=0) for sublist in mylist]
# 转换为二维Numpy数组(如果需要列表格式,再加.tolist())
result = np.array(padded_arrays)

print(result)
# 输出:
# [[0 0 1]
#  [0 1 2]
#  [1 2 3]]

3. Pandas绕路实现(如果已有Pandas依赖)

既然你提到了Pandas的fillna默认是右侧补0,那我们可以通过反转列表的方式来间接实现左侧补0:

import pandas as pd

mylist = [[1],[1,2],[1,2,3]]
# 先把每个子列表反转,让需要补0的一侧转到右侧
reversed_sublists = [sublist[::-1] for sublist in mylist]
# 转换成DataFrame,自动在右侧补NaN
df = pd.DataFrame(reversed_sublists)
# 用0填充NaN,再把每一行反转回来
padded_list = df.fillna(0).astype(int).apply(lambda row: row[::-1].tolist(), axis=1).tolist()

print(padded_list)
# 输出: [[0, 0, 1], [0, 1, 2], [1, 2, 3]]

内容的提问来源于stack exchange,提问作者Guillem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:23:43