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

Grasshopper中Python列表元素与同列表后续元素运算的替代方案

简化Grasshopper中Python列表循环相邻元素运算的方法

针对你在Grasshopper中处理列表时,需要实现**每个元素与下一个元素(最后一个元素配对第一个)**运算的需求,这里提供几种比复制偏移列表更简洁的实现方式:

方案1:列表推导式直接合并逻辑

无需单独定义偏移列表,把原逻辑整合到一行列表推导中,减少变量冗余:

TestList = [0,1,2,3,4,5]
TestList3 = [a + b for a, b in zip(TestList, TestList[-1:] + TestList[:-1])]
print(TestList3)  # 输出: [5,1,3,5,7,9]

方案2:用itertools.cycle实现循环迭代

适合处理大型列表,避免创建重复列表占用内存:

import itertools

TestList = [0,1,2,3,4,5]
cycled_list = itertools.cycle(TestList)
next(cycled_list)  # 将迭代器偏移一位,指向原列表的第二个元素
TestList3 = [num + next(cycled_list) for num in TestList]
print(TestList3)  # 输出: [5,1,3,5,7,9]

cycle会生成一个无限循环的迭代器,通过next()控制偏移,遍历原列表时自动配对下一个元素,最后一个元素会自然配对第一个元素。

方案3:索引模运算直接访问

最直观的索引处理方式,无需额外依赖或列表复制,适合Grasshopper中固定长度的几何列表:

TestList = [0,1,2,3,4,5]
list_len = len(TestList)
TestList3 = [TestList[i] + TestList[(i + 1) % list_len] for i in range(list_len)]
print(TestList3)  # 输出: [5,1,3,5,7,9]

利用(i+1) % list_len实现循环索引:当i是最后一个元素的索引时,(i+1)取模后回到0,正好对应第一个元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:21:00