【发布时间】:2011-04-12 12:25:07
【问题描述】:
我有两个字典列表。第一个列表包含根据x、y、z、半径的球体定义。第二个列表包含空间中的各个点,如 x、y、z。这些列表都很长,因此遍历每个列表并与所有值进行比较是低效的。
我一直在尝试 map 和 reduce 项,但它们都只在过滤函数中占用 1 个项。我使用的是以下内容:
for curNode in nodeList:
for i in sphereList:
tmpRad = findRadius(i, curNode)
if float(tmpRad) <= float(i['radius']):
print "Remove node", curNode['num']
nodeRemovalList.append(curNode['num'])
break
其中i 是当前球体(x, y, z, rad),curNode 是节点(num, x, y, z)。对于大型列表,这变得非常低效。我想过滤掉落在任何球体半径内的节点。
【问题讨论】:
标签: python performance list filter compare