0
考慮犀牛蟒蛇下面的文本,其中arrPts是點列表理解,同時調用Python中的函數
start_point = rs.GetPoint()
arrPts0 = []
arrPts0 = rs.GetPoints()
arrPts=[]
for ind, pt in enumerate(arrPts0):
arrPts.append([pt,ind, 'angle','vector',0])
然後我通過一個函數(DEF)將取代「角度」與實際運行arrPts名單角度的字符串(例如,「> 45」),然後我想通過下面的代碼結束調用另一個單獨的函數來運行(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),但總是在主列表(arrPts)上工作,如果有一個函數(def)的方式?
類似:
Vectors.append(add_Vectors(newPts, start_point) ----> for '>45' in pt[2]
感謝
帕烏
1H後來......試過,但似乎並沒有工作:
newPts = []
Vectors = add_Vectors([newPts for pt in arrPts if '<45' in pt[2]], start_point)
如果您從'[]'切換到'()',您將擁有一個生成器表達式,在調用add_Vectors之前不需要生成整個列表。 – Marcin