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

Maya Python for循环中无法调整列表项 删除场景对象后更新子节点路径问题

问题核心原因

你原有代码的错误逻辑主要有两点:

  • 遍历listA的过程中直接修改listA本身,会导致遍历跳过部分元素
  • 筛选删除对象、更新路径的逻辑放在了循环内部,每次遍历单个对象都会执行一次全量更新,逻辑完全错位

修改后代码

listA = [u'|Trunk|Branch_ext|C',
      u'|Trunk|Branch_ext',
      u'|Trunk|Branch|A',
      u'|Trunk|Branch|B',
      u'|Trunk|Branch_ext|Branch|D',
      u'|Trunk|Branch_ext|Branch|E',
      u'|Trunk']

objToDelete = 'Branch_ext'
trashBin = []

# 第一步:先全量筛选所有要删除的节点,不修改原列表
for obj in listA:
    shortName = obj.split('|')[-1]
    # 用精确匹配避免误删名称包含关键字的节点
    if objToDelete == shortName:
        trashBin.append(obj)

# 第二步:删除待删节点本身
res = list(set(listA) - set(trashBin))

# 第三步:统一修正剩余节点的路径
listAUpd = []
for item in res:
    # 替换路径中包含待删节点的段落
    new_path = item.replace(f'|{objToDelete}|', '|')
    # 兼容待删节点在路径末尾的极端场景
    if new_path.endswith(f'|{objToDelete}'):
        new_path = new_path[:-len(f'|{objToDelete}')]
    listAUpd.append(new_path)

# 去重得到最终结果
listA = list(set(listAUpd))
print(listA)

运行结果

执行后输出完全符合预期:

['|Trunk|Branch|A', '|Trunk|Branch|B', '|Trunk|Branch|D', '|Trunk|Branch|E', '|Trunk|C', '|Trunk']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:24:03