我有一个使用 GyPython 组件的简单脚本,用于 Rhino/Grasshopper。目标是将每小时的天气数据(仅记录几个小时)分配给小时。如果没有测量,则返回 0。它应该像这样工作(具有相似值的示例):
hoursList = [hr1,hr2,hr3,hr4,hr5,hr6]
measuredList = [hr2,hr3,hr6]
recordList = [wData1,wData2,wData3]
finalList = []
def assignData(i,y):
for i < len(leadList):
if hoursList[i] == measuredList[y]:
finalList.append(recordList[y])
i += 1
y += 1
else:
finalList.append(0)
i += 1
assignData(i,y)
i = 0
y = 0
assignData(i,y)
应该返回_
[0,wData1,wData2,0,0,wData3]
这种情况的结果finalList
(添加换行符以提高可读性)
[0, 'wData1', 'wData2', 0, 0, 'wData3', 'wData3',
0, 'wData3', 'wData3', 0, 0, 'wData3', 'wData3',
0, 'wData3', 'wData3', 'wData2', 0, 0, 'wData3', 'wData3',
0, 'wData3', 'wData3', 0, 0, 'wData3', 'wData3',
0, 'wData3', 'wData3', 'wData1', 'wData2', 0, 0, 'wData3', 'wData3',
0, 'wData3', 'wData3', 0, 0, 'wData3', 'wData3',
0, 'wData3', 'wData3', 'wData2', 0, 0, 'wData3', 'wData3',
0, 'wData3', 'wData3', 0, 0, 'wData3', 'wData3',
0, 'wData3', 'wData3']
当我尝试在大型数据列表(大约 43000 个值)上运行此代码时,它在大约 7000 次迭代后崩溃。我检查了 sys.getrecursionlimit,它是 2147483647。有什么想法可以完成这项工作吗?