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)

コメントを残す