У меня есть два списка (которые могут иметь или не иметь одинаковую длину). В каждом списке есть ряд кортежей из двух точек (в основном значения 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) )]