首页 > 解决方案 > 优雅的元组操作建议

问题描述

我正在处理由元组表示的图像和像素位置。我想检查像素是否彼此相邻并提出了一个可行的解决方案。我确信有一个比我更优雅的解决方案。这是我拥有的功能:

def test_neighbors(tup1, tup2):
    neighbors = lambda a, b: [(a + 1, b), (a - 1, b), (a, b + 1), (a, b - 1)]
    list1 = neighbors(tup1[0], tup1[1])
    list2 = neighbors(tup2[0], tup2[1])
    for item in list1:
        if item in list2:
            return True
    return False

同样,这段代码运行良好,所以如果这不是一个正确的问题,我很抱歉。提前感谢您的建议!

标签: pythontuples

解决方案


您可以只检查坐标轴上的增量

def test_neighbors(tup1, tup2):
    x_delta = abs(tup1[0] - tup2[0])
    y_delta = abs(tup1[1] - tup2[1])
    return x_delta + y_delta == 1


推荐阅读