我有兩個列表(可能是也可能不是相同的長度)。在每個列表中,有一系列兩點的元組(基本上是X,Y值)。比較兩個點元組列表的更快方法?
我比較兩個列表對彼此找到兩個具有相似點值的點。我嘗試了列表理解技術,但它真的讓列表中的嵌套元組感到困惑,並且我無法讓它工作。
這是做這個最好的(最快的)方法嗎?我覺得可能會有更多的Pythonic這樣做。
說我有兩個列表:
pointPairA = [(2,1), (4,8)]
pointPairB = [(3,2), (10,2), (4,2)]
然後空列表,用於存儲對和解包的元組的公差值僅存儲配對
matchedPairs = []
tolerance = 2
然後這個循環,比較差異,並將它們添加到matchedPairs列表以指示匹配。
for pointPairA in pointPairListA:
for pointPairB in pointPairListB:
## Assign the current X,Y values for each pair
pointPairA_x, pointPairA_y = pointPairA
pointPairB_x, pointPairB_x = pointPairB
## Get the difference of each set of points
xDiff = abs(pointPairA_x - pointPairB_x)
yDiff = abs(pointPairA1_y - pointPairB_y)
if xDiff < tolerance and yDiff < tolerance:
matchedPairs.append((pointPairA, pointPairB))
這將導致matchedPairs這樣看,裏面都指向元組的元組:
[((2,1), (3,2)), ((2,1), (4,2))]
的列表中一個如果你可以用「距離」,而不是爲容忍廣場,你可以使用複雜的數字,而不是元組例如。 '[2 + 1j,4 + 8j]'。然後你可以比較'abs(pt1-pt2)'和容差 – 2011-06-08 02:01:06