1

Houdini モデリング ソフトウェアの Python を始めたばかりです。

私がやりたいのは、「ポイント座標」と「建物レベル値」を含むリスト/辞書を作成することです。次に、レベル属性が一致するポイント座標の各セットに対して for ループを使用します。

私がこれまでに持っているのはこれです:

for point in geo.points():
    for i in range(-1,levels):
        if i == -1:
            pos = point.position()
        else:       
            pos = point.position() + hou.Vector3((0, level_height,0)) 
        coord = []
        coord.append(pos)
        for position in coord:
            point = geo.createPoint()
            point.setPosition(position)
            point.setAttribValue(pointlevel, i+1)
            point.setAttribValue(building, cluster)

私が実際にやりたいことは次のとおりです。

for each buildinglevel:   
    do for loop for all points with that buildinglevel

私の知識は限られていますが、達成したいことはわかっています。これを行う最も簡単な方法は何ですか?

4

1 に答える 1

1

探している関数は と呼ばれitertools.groupby()ます。入力がすでにそのようなグループにソートされてgroupby()いる場合、与えられたキーによって iterable をグループ化します。

from itertools import groupby

for pointlevel, points in groupby(geo.points(), key=pointlevel_of_point):
    for point in points:
        # do something with all points for this pointlevel.

wherepointlevel_of_pointは によって返される任意のポイントのレベルを返す関数ですgeo.points()

groupby()関数の現在の戻り値と、関数の戻り値が変わらないkeyすべての要素を返すことが保証されている新しい iterable が得られます。key

于 2013-02-19T14:41:17.840 に答える