У меня есть два списка словарей.Первый список содержит определения сферы в терминах x, y, z, радиус .Второй список содержит различные точки в пространстве как x, y, z .Эти списки очень длинные, поэтому итерации по каждому списку и сравнение со всеми значениями неэффективны.
Я пробовал карту и сокращал термины, но оба они принимают только 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)
.Для больших списков это становится очень неэффективным.Я хотел бы отфильтровать узлы, которые попадают в радиус любой сферы.