首页 > 解决方案 > 将python列表列表中的项目与该项目两侧的N个邻居进行比较

问题描述

我在 Python 中有一个包含 500 个图像文件的列表,我试图将列表中的每个图像与其左侧的 N 个邻居和右侧的 N 个邻居进行比较。我的邻居如果右边没有 N 个邻居,我只想将它与未来的元素进行比较,直到到达列表的末尾,反之亦然,如果左边没有 N 个邻居。

标签: pythonlist

解决方案


这会奏效。请注意,您不必比较左右的项目(即,您不必同时比较 item[n] 和 item[n+1],以及比较 item[n+1] 和 item[n ])。

def compare_values(values, n, compare):

    for i in range(0, len(values)):

        # compare left
        x = i - n
        if x < 0:
            x = 0
        if x < i:
            for j in range(x, i):
                compare(values[i], values[j])

        # compare right
        x = i + n + 1
        if x > len(values):
            x = len(values)
        if x > i:
            for j in range(i + 1, x):
                compare(values[i], values[j])

以下是验证此解决方案的方法。

def print_values(item1, item2):
    print("Compare {} to {}".format(item1, item2))

def main():
    values = ['first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh', 'eigth', 'ninth', 'tenth' ]
    n = 3
    compare_values(values, 3, print_values)

if __name__ == "__main__":
    main()

推荐阅读