在python中调用函数时的列表理解

在python中调用函数时的列表理解,python,list-comprehension,Python,List Comprehension,考虑rhino python中的以下文本,其中arrPts是一个点列表 start_point = rs.GetPoint() arrPts0 = [] arrPts0 = rs.GetPoints() arrPts=[] for ind, pt in enumerate(arrPts0): arrPts.append( [pt,ind, 'angle','vector',0] ) 然后我通过一个函数(def)运行arrPts,该函数将“angle”替换为实际的角度字符串(例如“>4

考虑rhino python中的以下文本,其中arrPts是一个点列表

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

arrPts=[]
for ind, pt in enumerate(arrPts0):
    arrPts.append( [pt,ind, 'angle','vector',0] )
然后我通过一个函数(def)运行arrPts,该函数将“angle”替换为实际的角度字符串(例如“>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))
谢谢

帕夫

1小时后。。。。。。尝试过这个,但似乎不起作用:

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

Vectors=add_Vectors([newPts for pt in arrPts if'),我想我只找到了一行的正确语法

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

Vectors=add_Vectors([pt for pt in arrPts if')如果您从
[]
切换到
()
您将拥有一个生成器表达式,在调用
add_Vectors
之前,它不必生成整个列表。
Vectors = add_Vectors([pt for pt in arrPts if '<45' in pt[2]], start_point)