猿问

如何遍历python list,然后删除近似元素

我有一个list,list里面的element是dict。
[{centre:(743,1105), radius: 41},
{centre:(743, 1106), radius: 48},
{centre:(899, 1443), radius: 48},
{centre:(900, 1442), radius: 40}]

这个关于圆心和半径的一个数据结构。我想把圆心相近的圆(横坐标相差+3/-3 左右)去掉一个(保留半径较小的)

def takeXAxis(input):    return input['centre'][0]def sortCircles(circleDetails):
    circleDetails.sort(key=takeXAxis)def removeClosedCircle(circleDetails):
    newCircleDetails = []    for i in range(len(circleDetails)):
        j = i + 1
        for j in range(len(circleDetails)):
        ...

接下来我就不太会了,有人能帮我看下吗?


Helenr
浏览 774回答 2
2回答

临摹微笑

import&nbsp;itertools my_list&nbsp;=&nbsp;[ &nbsp;&nbsp;&nbsp;&nbsp;{'centre':(743,1105),&nbsp;'radius':&nbsp;41}, &nbsp;&nbsp;&nbsp;&nbsp;{'centre':(743,&nbsp;1106),&nbsp;'radius':&nbsp;48}, &nbsp;&nbsp;&nbsp;&nbsp;{'centre':(899,&nbsp;1443),&nbsp;'radius':&nbsp;48}, &nbsp;&nbsp;&nbsp;&nbsp;{'centre':(900,&nbsp;1442),&nbsp;'radius':&nbsp;40} ]for&nbsp;a,&nbsp;b&nbsp;in&nbsp;itertools.combinations(my_list,&nbsp;2): &nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;only&nbsp;need&nbsp;to&nbsp;do&nbsp;something&nbsp;if&nbsp;the&nbsp;diff&nbsp;is&nbsp;in&nbsp;range..&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;abs(a['centre'][0]&nbsp;-&nbsp;b['centre'][0])&nbsp;<=&nbsp;3: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;check&nbsp;the&nbsp;radius,&nbsp;if&nbsp;bigger,&nbsp;remove&nbsp;it,&nbsp;else&nbsp;remove&nbsp;the&nbsp;other.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;a['radius']&nbsp;>&nbsp;b['radius']: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my_list.remove(a)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my_list.remove(b)print&nbsp;my_list

月关宝盒

问题不清楚, 如果有圆 x=1, 另一个 x=5 这时来一个x=3 前面两个圆都去掉?圆心一定是整数吗?
随时随地看视频慕课网APP

相关分类

Python
我要回答