python 如何让一个list中的某个元素与其他所有元素比较
[(2.0,2.1),(2.1,2.0),(2.0,2.0),(4.0,4.0),(4.1,4.2),(4.2,4.1),(3.1,2.9)],现在要算出这个list中的...
[(2.0,2.1),(2.1,2.0),(2.0,2.0),(4.0,4.0),(4.1,4.2),(4.2,4.1),(3.1,2.9)],现在要算出这个list中的每个点与其他所有点的距离,并且比较这些距离大小,然后得出与第一个点第一近的点,第二近的点。。与第二个点第一近的点,第二近的点。。。以此类推
展开
展开全部
# -*- coding: utf-8 -*-
"""
:created on: 2015年9月5日
:copyright: Nokia Solutions and Networks
:author: Chuanqing Qin
:contact: chuanqing.qin@nokia.com
"""
'''
[(2.0,2.1),(2.1,2.0),(2.0,2.0),(4.0,4.0),(4.1,4.2),(4.2,4.1),(3.1,2.9)],现在要
算出这个list中的每个点与其他所有点的距离,并且比较这些距离大小,然后得出与第一个点
第一近的点,第二近的点。。与第二个点第一近的点,第二近的点。。。以此类推
'''
import math
def distance_of_two_point(x, y):
return math.sqrt(math.pow(x[0] - y[0], 2) + math.pow(x[1]- y[1], 2))
def compare(index):
def compare_item(x, y):
if distance_of_two_point(index, x) > distance_of_two_point(index, y):
return 1
else:
return -1
return compare_item
def deal_list(list_in):
for index in list_in:
temp = [items for items in list_in if items != index]
print temp
temp = sorted(temp, compare(index))
print temp
a = []
for number, item in enumerate(temp):
a.append(distance_of_two_point(index, item))
print a
list_in = [(2.0,2.1),(2.1,2.0),(2.0,2.0),(4.0,4.0),(4.1,4.2),(4.2,4.1),(3.1,2.9)]
deal_list(list_in)
if __name__ == '__main__':
pass
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询