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

时间:2012-11-23 17:45:26

标签: 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'替换为实际的角度字符串(例如'> 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] 

感谢

帕乌

1小时后......尝试了这个但似乎不起作用:

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

1 个答案:

答案 0 :(得分:1)

我想我只找到了1行的正确语法!

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