2015-11-02 24 views
-1

我在列表中有一些对象,这里是一个对象类:干净名单,并分成对

class MyData: 
    def __init__(self, name, x1, y1, x2, y2): 
     self.name = name 
     self.x1 = x1 
     self.y1 = y1 
     self.x2 = x2 
     self.y2 = y2 

列表中的某些对象有一个对通过obj.y2但有一个宽容t = 10。所以obj.y2 = 498obj.y2 = 502是成对的,因为这些数字之间的差异小于10.某些对象没有一对。所以我需要干净的列表只有对作为输出。

[(obj,obj), (obj,obj),...]我想知道使用itertools,但不能构建逻辑。任何帮助?

回答

0

itertools.combinations怎么样?

组合( 'ABCD',2) - > AB AC AD BC BD光盘

你的情况类似

for x in itertools.combinations(yourlist, 2): 
    // Pseudocode: your compare logic, something like if absolute(y2 - y1) < 10: 
    // then add to a different pair_only_list