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

Python循环中if判断后列表追加仅存最后元素的问题修复

嵌套列表去冗余转换问题修复

问题背景

有一个多层嵌套的列表,需要转换为结构相似但去除多余嵌套的目标列表:

原始输入列表:

list_data_type = [
[['void1']], [['uint8']], [['uint8'], ['uint32']], [['void2']], [['void3']], [['void4']], [['void5']]
]

期望的目标输出:

list_data_converted = [
['void1'], ['uint8'], ['uint8', 'uint32'], ['void2'], ['void3'], ['void4'], ['void5']
]

原代码在循环结合判断追加元素时,最终仅保留最后一个元素['void5'],需要修复。

原代码问题点

  1. 未初始化存储最终结果的列表,处理后的元素没有被持续保存
  2. 依赖字符串替换解析列表,逻辑复杂且容易出现意外错误
  3. 分支中每次循环都会重新初始化临时列表,导致之前的处理结果丢失
  4. 使用list_data_type.index(element)获取索引,遇到重复元素时会返回错误位置

修复方案

方案一:简洁的列表推导式

直接通过嵌套推导完成扁平化处理,代码简洁高效:

list_data_type = [
[['void1']], [['uint8']], [['uint8'], ['uint32']], [['void2']], [['void3']], [['void4']], [['void5']]
]

list_data_converted = [
    [inner[0] for inner in sublist]
    for sublist in list_data_type
]

print(list_data_converted)

方案二:直观的循环实现

如果需要更清晰的逻辑展示,用普通循环分步处理:

list_data_type = [
[['void1']], [['uint8']], [['uint8'], ['uint32']], [['void2']], [['void3']], [['void4']], [['void5']]
]

list_data_converted = []
for sublist in list_data_type:
    temp = []
    # 遍历每个内部的单元素列表,提取出值
    for inner_item in sublist:
        temp.append(inner_item[0])
    list_data_converted.append(temp)

print(list_data_converted)

两种方案都能准确得到目标输出,核心逻辑是直接提取最内层列表的唯一元素,避免了复杂的字符串操作,同时确保所有处理后的元素都被追加到结果列表中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 22:40:43