繁体   English   中英

两组元组之间的区别

[英]The difference between two sets of tuples

我正在尝试编写一个接受元组(表示平面中的整数坐标)并返回所有相邻坐标( 不包括原始坐标 )的函数。

def get_adj_coord(coord):
    '''
    coord: tuple of int

    should return set of tuples representing coordinates adjacent
    to the original coord (not including the original)
    '''

    x,y = coord

    range1 = range(x-1, x+2)
    range2 = range(y-1, y+2)

    coords = {(x,y) for x in range1 for y in range2} - set(coord)

    return coords

问题在于此函数的返回值始终包含原始坐标:

In [9]: get_adj_coord((0,0))
Out[9]: {(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 0), (0, 1), (1, -1), (1, 0), (1, 1)}

我可能缺少集合和/或元组的基本知识,但是以下函数绝对不能返回我期望的结果。 我也尝试过使用:

coords = {(x,y) for x in range1 for y in range2}.remove(coord)

但是,函数什么也不返回。 谁能指出我在这里很清楚地缺少什么?

那是因为您没有减去正确的设置对象。 您当前的方法使用set((0,0)) -> {0} ,将元组转换为集合。 但是,您想要的是集合中的元组:

coords = {(x,y) for x in range1 for y in range2} - {coord}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM