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

Python遍历嵌套列表时如何保留原有列表数据结构

Python遍历嵌套列表时保留原数据结构的实现方案

问题说明

现有代码逻辑为将嵌套列表z中每个元素,与对应位置的w中数值相加,但执行后输出为拍平的一维列表,丢失了原有的嵌套结构:

  • 实际错误输出:[4, 4, 4, 5, 5]
  • 期望正确输出:[[4, 4, 4], [5, 5]]

问题出在原代码直接将计算后的单个内层元素追加到最外层列表,没有为每一组原始子列表维护对应的子容器,导致层级丢失。

解决方法

方法1:调整原生循环逻辑

处理每个原始子列表前,先创建临时子列表存储当前组的计算结果,等该子列表所有元素处理完成后,再将临时子列表整体追加到外层结果列表即可。

w = [3, 3]
z = [[1, 1, 1], [2, 2]]
lst = []

for x, y in zip(w, z):
    sub_list = []
    for u in y:
        sub_list.append(u + x)
    lst.append(sub_list)

print(lst)
# 输出:[[4, 4, 4], [5, 5]]

方法2:嵌套列表推导式(更简洁)

直接通过两层列表推导式对应原列表的两层嵌套结构,写法更简洁,不需要手动维护临时变量:

w = [3, 3]
z = [[1, 1, 1], [2, 2]]
lst = [[u + x for u in y] for x, y in zip(w, z)]

print(lst)
# 输出:[[4, 4, 4], [5, 5]]

核心原则

遍历处理嵌套结构时,有多少层嵌套就要对应维护多少层的结果容器,不能跨层级直接将内层元素追加到最外层容器,否则就会出现结构拍平的问题。


内容的提问来源于stack exchange,提问作者Elena Vazquez Peña

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:34:46