You need to enable JavaScript to run this app. Python实现同索引列表元素替换及IronPython缩进报错排查
优惠活动
大模型
产品
解决方案
定价
更多

Python实现同索引列表元素替换及IronPython缩进报错排查

报错原因说明

unindent does not match any outer indentation level属于Python语法层面的缩进匹配错误,和你设计的按索引替换的业务逻辑无直接关系:

  • 这类报错在Dynamo内置的IronPython执行环境中触发频率很高,核心原因是编写代码时混用了Tab制表符和半角空格作为缩进标记,两种标记的显示宽度不统一,解释器无法识别缩进对应的代码嵌套层级,直接中断执行。
  • 你编写的通过enumerate获取索引、匹配同位置list2元素做替换的逻辑,完全符合测试样例的输出要求,只要修正缩进问题即可正常运行。
修复方案
  1. 清空脚本中所有残留的Tab缩进,将所有代码块的嵌套层级统一使用4个半角空格对齐,重点检查两处缩进匹配关系:
    • for循环对应的循环体内容,缩进需和for语句保持正确的块级嵌套关系
    • if/else分支下的out.append()语句,需和对应的判断语句保持同一缩进层级,避免出现无规则的缩进错位
  2. 修正后可直接运行的代码示例:
list1 = IN[0]
list2 = IN[1]
out = []
for idx, itm in enumerate(list1):
    if itm == [] or itm == "Pxxx-xx":
        out.append(list2[idx])
    else:
        out.append(itm)
#Assign your output to the OUT variable.
OUT = out
可选稳定性增强

如果存在两个输入列表长度不匹配的使用场景,可以补充越界保护逻辑,避免运行时触发索引越界错误:

list1 = IN[0]
list2 = IN[1]
out = []
common_len = min(len(list1), len(list2))
# 遍历两个列表的公共长度区间执行替换逻辑
for idx in range(common_len):
    current_val = list1[idx]
    if current_val == [] or current_val == "Pxxx-xx":
        out.append(list2[idx])
    else:
        out.append(current_val)
# 若list1长度超过list2,超出区间的元素直接保留list1原内容
if len(list1) > common_len:
    out.extend(list1[common_len:])

OUT = out

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 11:36:02