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

在Dynamo中使用Python移除嵌套子列表最后一项的问题

问题:移除嵌套列表中每个子列表的最后一项

在Dynamo中使用Python工作时,我有两组包含嵌套子列表的curves和vectors列表,想要移除每个子列表中的最后一项。尝试用zip函数处理两层列表后得到了空列表,原代码如下:

curves = [[curve1, curve2, curve3, curve4, curve5], [curve6, curve7, curve8, curve9],[curve10,curve11, curve12], [curve13, curve14]]

vectors= [[vector1, vector2, vector3, vector4, vector5], [vector6, vector7, vector8, vector9],[vector10,vector11, vector12], [vector13, vector14]]

curves1 = []
temp1 = []
vectors1= []
temp2 = []

for i, j in zip(range((0,len(curves)), range(0, len(vectors))):
    for c, v in zip(range(0, len(i)-1), range(0, len(j)-1):      
        temp1.append(c)      
        temp2.append(v)  
    curves1.append(temp1)  
    vectors1.append(temp2)  
    temp1 =[]  
    temp2 = []
OUT = curves1 , vectors1

期望得到的结果:

curves1 = [[curve1, curve2, curve3, curve4], [curve6, curve7, curve8],[curve10,curve11], [curve13]]

vectors1= [[vector1, vector2, vector3, vector4], [vector6, vector7, vector8],[vector10,vector11], [vector13]]

原代码的问题

  1. 语法错误:第一个for循环里的range((0,len(curves))多了一层括号,写法无效;且完全没必要用range遍历索引,直接操作子列表更简单。
  2. 逻辑错误:内层循环把索引值c、v添加到临时列表,而非对应子列表里的曲线/向量元素,结果完全偏离需求。
  3. 冗余复杂:嵌套循环加临时列表的写法纯属多余,Python的列表切片可以直接实现移除最后一项的需求。

正确解法

方法1:列表推导式(简洁高效)

直接对每个子列表使用切片[:-1](取到倒数第二个元素),同步处理两组列表:

curves = [[curve1, curve2, curve3, curve4, curve5], [curve6, curve7, curve8, curve9],[curve10,curve11, curve12], [curve13, curve14]]
vectors= [[vector1, vector2, vector3, vector4, vector5], [vector6, vector7, vector8, vector9],[vector10,vector11, vector12], [vector13, vector14]]

curves1 = [sub_list[:-1] for sub_list in curves]
vectors1 = [sub_list[:-1] for sub_list in vectors]

OUT = curves1, vectors1

方法2:循环写法(直观易懂)

如果习惯用循环处理,直接遍历每个子列表,切片后添加到新列表:

curves = [[curve1, curve2, curve3, curve4, curve5], [curve6, curve7, curve8, curve9],[curve10,curve11, curve12], [curve13, curve14]]
vectors= [[vector1, vector2, vector3, vector4, vector5], [vector6, vector7, vector8, vector9],[vector10,vector11, vector12], [vector13, vector14]]

curves1 = []
vectors1 = []

for curve_sub, vector_sub in zip(curves, vectors):
    # 移除当前子列表的最后一项
    curves1.append(curve_sub[:-1])
    vectors1.append(vector_sub[:-1])

OUT = curves1, vectors1

两种方法都能得到你想要的结果,其中列表推导式是Python处理这类场景的最优写法。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 10:55:09