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

Python嵌套列表子列表补全至10元素:规避zip_longest转置问题

解决子列表补全至指定长度的简洁方法

你完全不用靠两次zip_longest转置来实现需求,直接对每个子列表单独补全就行,代码更简洁高效:

# 直接生成补全后的列表,每个子列表长度固定为10
filled_results = [sublist + [''] * (10 - len(sublist)) for sublist in master_results]

# 验证结果:会输出74次10
for item in filled_results:
    print(len(item))

为什么之前的方法会出现转置?

zip_longest(*master_results)的核心逻辑是按位置聚合所有子列表的元素:把所有子列表的第1个元素凑成一个元组,第2个元素凑成另一个元组……因为最长的子列表是10个元素,最终会得到10个元组,每个元组包含74个元素(对应74个子列表的对应位置),这就是你看到的10×74结构。两次转置确实能还原,但属于没必要的绕路操作。

其他可选实现(用itertools工具)

如果偏好使用itertools生态,也可以用islice配合chain来完成补全,但列表推导式已经是最直观简洁的方案:

from itertools import islice, chain, repeat

def fill_sublist(sublist, target_len=10, fillvalue=''):
    return list(islice(chain(sublist, repeat(fillvalue)), target_len))

filled_results = [fill_sublist(s) for s in master_results]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:54:56