top of page
  • 作家相片Yimin Chen

【教學】在GH或Dy中將資料整理成兩兩一組



本週有同學提問,要怎麼將上圖左側的資料形式兩兩一組,整理成如上圖右的形式,資料結構與整理確實是新手在學習程式時的一個門檻,本篇文章我們會介紹兩種方法來做到這件事情。



方法1:直接呼叫Python節點其實是最快的方法,但對於新手來說可能稍微困難,但由於本範例之程式碼不長,因此不失為踏入Python的入門學習範例,整個語法如上圖表示,透過一個for迴圈即可達成,唯一需要注意的是a為最終的成果,此處是一個二維的列表,GH並不支援二維列表的顯示,因此必須把它轉換成Tree的資料結構,我們可以直接呼叫treehelpers來直接轉換。另外若不熟悉range()與len()函數的同學,可參考下面的說明。





左側三種寫法所產生的結果都相同,數列起始的預設值為0,每次步進的增加值預設是1,所以如果想要產生的數列是從0開始,且每次都增加1的話,就可以用第一種最簡潔的寫法。




len()函數可以用來取得列表的長度,以上圖的列表為例,就可以得到執行len(my_list),其結果會回傳3。





有了以上的概念之後,我們在GH中也只是把一樣的概念用對應的節點去實作出來,結果如上圖,原本python中的range()用series取代,而原本python中的len()則用list length取代,原本的x[i]與x[i+1]則可以用List Item達到,最後再利用Weave把x[i]的資料與x[i+1]的資料放在一起行程最後的結果。



在Dynamo中的做法也很相似,用Sequence取代range(),用List.Count取代len(),用GetItemAtIndex去取list中的值,最後使用List.Combine將兩組資料和在一起,須注意的是Combine必須提供combine function,這邊我們使用List.Create,當前方沒有接上Input的時候,就可以被視為function輸入,最終得到我們的成果。

79 次查看0 則留言
bottom of page