Rhino/Grasshopper用のGyPythonコンポーネントを使用した簡単なスクリプトがあります。目標は、1時間ごとの気象データ(数時間しか記録されていない)を時間に割り当てることです。加え大きなデータセットで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を返すない測定がなかった場合は、この(同様の値を有する例)のように動作するはず
[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