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中的每个点与其他所有点的距离,并且比较这些距离大小,然后得出与第一个点第一近的点,第二近的点。。与第二个点第一近的点,第二近的点。。。以此类推 展开
 我来答
旅春冬TJ
推荐于2016-11-14 · TA获得超过1082个赞
知道大有可为答主
回答量:1271
采纳率:66%
帮助的人:506万
展开全部
# -*- 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
        print
        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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式