如何解决通过坐标比较对嵌套列表进行排序
我正在尝试像这样对嵌套列表进行排序:
[[id_num,x_coord,y_coord,z_coord,value],...]
我需要的是按距离减少初始列表中的项目(删除附近的点)并仅保留具有最大值(sublistItem[4]
)的项目。
所以我试着像这样按距离对列表进行排序:
def compare(listA,listB):
outData = []
distance = np.sqrt( (listA[1]-listB[1])**2 + (listA[2]-listB[2])**2 + (listA[3]-listB[3])**2 )
if (distance < 50) and (distance != 0) :
outData.append(listA[0])
return outData
def listReduction(nodeList):
nearNodesList = []
for i in range(len(nodeList)):
for j in range(i+1,len(nodeList)):
nearNodesList.append(compare(nodeList[i],nodeList[j]))
uniList = np.unique(np.array(nearNodesList))
flat_list = [item for sublist in uniList for item in sublist]
finalList = []
for item in nodeList:
if item[0] not in flat_list:
finalList.append(item)
sortedList = sorted(finalList,key = lambda x: x[-1],reverse=True)
通过这种方式,我只减少了项目数量(但不是最大的项目)。你知道如何放入代码条件以保持最大价值吗?
当然,我可以根据最终列表再次循环遍历初始列表,并找到正确距离的最大值。但我认为必须有更简单、更快的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。