我正在尝试编写一个带元组的函数(表示平面中的整数坐标)并返回所有相邻坐标不包括原始坐标。
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)
但是函数什么都不返回。任何人都可以指出我在这里很清楚的缺失吗?
答案 0 :(得分:4)
那是因为你没有减去正确的设定对象。您当前的方法使用set((0,0)) -> {0}
将元组转换为集合。
但是,你想要的是一组中的元组:
coords = {(x,y) for x in range1 for y in range2} - {coord}