0

arrPtsがポイントのリストであるrhinopythonの次のテキストを検討してください

start_point = rs.GetPoint()
arrPts0 = []
arrPts0 = rs.GetPoints()

arrPts=[]
for ind, pt in enumerate(arrPts0):
    arrPts.append( [pt,ind, 'angle','vector',0] )

次に、'angle'を実際の角度の文字列('> 45'など)に置き換える関数(def)を介してarrPtsを実行し、次のコードを実行して、'と呼ばれる別の別の関数(def)を呼び出すことになります。 add_Vectors':

Vectors = []
newPts = []
for pt in arrPts:
    if '>45' or '<45' in pt[2]:
        newPts.append(pt)

Vectors.append(add_Vectors(newPts, start_point))

リスト内包表記を使用して上記の部分を書き直し、新しいリスト(newPts)を作成するのではなく、条件が満たされたときにのみ実行されるようにするにはどうすればよいですか?途中で関数(def)がある場合は、常にメインリスト(arrPts)で動作します?

何かのようなもの:

Vectors.append(add_Vectors(newPts, start_point) ----> for '>45' in pt[2] 

ありがとう

パブ

1時間後......これを試しましたが、機能しないようです:

newPts = []
Vectors = add_Vectors([newPts for pt in arrPts if '<45' in pt[2]], start_point)
4

1 に答える 1

1

そして、たった1行の正しい構文を見つけたと思います!

Vectors = add_Vectors([pt for pt in arrPts if '<45' in pt[2]], start_point)
于 2012-11-23T19:46:22.527 に答える