我有一个简单的脚本使用GyPython组件Rhino/Grasshopper。目标是将小时天气数据(只记录几小时)分配到几小时。如果没有测量返回0。它应该这样工作(例如具有类似的值):大型数据集崩溃python脚本
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.任何想法如何获得这项工作?
欢迎来到StackOverflow。请阅读并遵守帮助文档中的发布准则。 [最小,完整,可验证的示例](http://stackoverflow.com/help/mcve)适用于此处。在发布您的MCVE代码并准确描述问题之前,我们无法为您提供有效的帮助。 我们应该能够将发布的代码粘贴到文本文件中,并重现您描述的问题。 尤其是,你还没有给我们leadList' - 更好的是,只需从给定的变量中得出它的长度,所以我们可以运行你的代码。 – Prune
另外,请注意,您的代码不起作用。你有语法错误可以阻止它运行,更不用说你描述的方式了。它不*返回*任何东西;相反,它改变了全球名单作为一个副作用,你没有打扰向我们展示。 – Prune
除此之外,你实际得到的6个元素数据集的输出是什么?我可以在我的例子中看到它,但这应该是*你的问题来描述。 – Prune