Grasshopper :: Indexを抽出
データの操作を行う際、リストのインデックスを抽出したい場面があるかと思います。
コンポーネントの出力先に、インデックスがあれば良いのですが、無い場合もあるので、
インデックスの抽出方法を紹介したいと思います。
レシピ
インデックスを抽出できるのは、[Item Index]コンポーネントです。
入力側の[List]に元となるデータ、[Item]にインデックスを抽出したいデータをつなぐと、出力側の[Index]から[Item]のインデックスが返されます。
したがって、図の上から順に、入力側に同じデータをつなぐと、[0,1,2…]とそのままのインデックスが返されます。
次に、[Jitter]コンポーネントで順番をランダムに入れ替えたデータを[Item]につなぐと、入れ替えた通りにインデックスが返されます。([Jitter]コンポーネントは出力側の[Indices]からインデックスが出てくるのであまり意味は無いですが。。)
3つ目は、[List Item]コンポーネントでデータを一部抽出したものを[Item]につなぐと、ちゃんと抽出したインデックスが返されます。
返されるインデックスは、恐らく[List]と[Item]内のオブジェクトのGUIDから判断しているものかと思います。
最後は、Pythonで抽出した例です。
コードは以下の通りです。
for文にenumerate(x)
を使用しています。これを使うとインデックスも同時に返してくれるので、なかなか便利です。
インデックスを抽出したい際はぜひ使ってみてください。
使用した主なコンポーネント
- [Item Index] (Sets > List > Item Index)
- [List Item] (Sets > List > List Item)
- [Jitter] (Sets > Sequence > Jitter)
- [Python Script] (Maths > Script > Python Script)