当前位置: 首页 > 面试题库 >

确定单元二维列表的邻居

阎安邦
2023-03-14
问题内容

我有一个清单清单,例如

[[1, 2, 3,],[4, 5, 6,],[7, 8, 9]]

用图形表示为:

1 2 3
4 5 6
7 8 9

我正在寻找一种优雅的方法来水平,垂直和对角地检查单元格邻居的值。例如,[0] [2]的邻居是[0] [1],[1] [1]和[1] [2]或数字2、5、6。

现在我意识到,我可以对每个值进行一次暴力攻击:

[i-1][j]
[i][j-1]
[i-1][j-1]
[i+1][j]
[i][j+1]
[i+1][j+1]
[i+1][j-1]
[i-1][j+1]

但这很容易,我认为我可以通过查看一些更优雅的方法来学习更多。


问题答案:
# Size of "board"
X = 10
Y = 10

neighbors = lambda x, y : [(x2, y2) for x2 in range(x-1, x+2)
                               for y2 in range(y-1, y+2)
                               if (-1 < x <= X and
                                   -1 < y <= Y and
                                   (x != x2 or y != y2) and
                                   (0 <= x2 <= X) and
                                   (0 <= y2 <= Y))]

>>> print(neighbors(5, 5))
[(4, 4), (4, 5), (4, 6), (5, 4), (5, 6), (6, 4), (6, 5), (6, 6)]

我不知道这是否干净,但是这种单行代码可以遍历所有邻居并丢弃任何边缘情况,从而为您提供所有邻居。



 类似资料:
  • 有没有办法处理二维Java列表? 情况:我有一个带有节点、边和每条边的权重的图。现在我需要一个数据结构来存储每个节点: a)它的邻居b)每个邻居的边权重 首先,我想到了创建一个新的类“节点”,带有标识符和类似二维数组的东西来存储邻居标识符和边权重。但是每个节点的邻居数量没有给出,并且在运行时可能会动态增加。因此,我认为二维数组不是这里要走的路。 我想在类“节点”中有一个列表是可能的,比如: 但显然

  • 我有UCI数据仓库中的胸部手术数据集 此数据集中的一行如下所示: 我有一个脚本可以将这些行读入子列表: 每个子列表都是文件中的一行,包含一些数据转换(大多数情况下,只是将行中的每个元素转换为一些数值;这部分与问题无关) 因此,每个子列表如下所示: 现在,我想做的是将这个子列表转换为两个子列表,其中: 第一个列表的th子列表包含所有元素,但原始列表的th子列表的最后一个元素除外 第二个列表的第一个子

  • 问题内容: 我创建了一个二维数组,如: 打印此列表将给出输出: 其中每个列表项都是“行,列”格式的字符串 现在给出此列表,我想按顺序迭代它: 依次遍历第一列和第二列,依此类推。我该如何循环? 此问题与纯python列表有关,而标记为相同的问题与numpy数组有关。他们明显不同 问题答案: 使用和。就像是:

  • 问题内容: 是否有一种简单的方法来查找二维数组中某个元素的邻居(即,元素周围的八个元素)?缺少只是以不同的组合减去和增加索引,像这样: … 等等。 问题答案: (伪代码) 当然,这几乎要花费原始硬编码解决方案的许多行,但是通过这一解决方案,您可以最大程度地扩展“邻居”(2-3个或更多单元格)

  • 好的,我已经成功地将一个列表变成了一个二维数组。唯一的问题是输出只索引一次,所以基本上,如果我想将每个列表中的10个元素添加到一个二维数组中,那么这个二维数组将只有一个包含“n”个元素的索引。 例如 我愿意 相反,它正在返回: 我接受了以下建议:将ArrayList转换为包含不同长度数组的2D数组 这是我的代码: 我正在使用数据提供者(DataProviders)和TestNG,它们需要返回一个二

  • 问题内容: Google Python类| 清单练习- 给定一个数字列表,返回一个列表,其中所有相邻的==元素都已简化为单个元素,因此[1、2、2、3]返回[1、2、3]。您可以创建一个新列表或修改传入的列表。 我使用新列表的解决方案是- 问题甚至暗示可以通过修改传入列表来完成。但是,python文档警告不要在使用for循环迭代列表时修改元素。 我想知道除了遍历列表之外还能做些什么呢?我不是在寻找