python - 在二维数组中查找有效的邻居索引

标签 python

我有一个 Python 中的二维列表。给定一个索引,我想找到该索引的所有邻居。因此,如果我的列表是 3x3 然后给定索引 (1, 1) 我想返回 [(0, 1), (1, 0), ( 2, 1), (1, 2), (2, 2), (0, 0), (0, 2), (2, 0)] 但如果索引是 (0, 0) 那么我只想返回 [(0, 1), (1,0), (1, 1)]。我知道如何用丑陋的 if 语句来做到这一点。我的问题是,是否有一个漂亮的Pythonic magic one liner可以做到这一点?

最佳答案

例如,具有列表推导式的 3x3 空间的恒定时间解决方案:

valid={(x,y) for x in range(3) for y in range (3)} 
dirs=[(dx,dy) for dx in (-1,0,1) for dy in (-1,0,1) if (dx,dy)!=(0,0)] 
def voisins(x,y): return [(x+dx,y+dy) for (dx,dy) in dirs  if (x+dx,y+dy) in valid]

关于python - 在二维数组中查找有效的邻居索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29912408/

相关文章:

python - 如何在 Django 1.10 中跨 2 个不同的基于类的 View 重构类似的函数?

python - factoryboy pytest session 管理

python - 给定路径可能存在或不存在的文件列表,如何在 Python 中创建目录?

python - Pymongo 和聚合框架查询

python - SQLAlchemy 引擎和 session 对象的类型提示

python - 使用预训练嵌入的基于词集的词义消歧

python - Pandas:使用变量从变量名称创建具有一行和一列名称的数据框

python - 要下载什么才能使 nltk.tokenize.word_tokenize 工作?

python - Doubley 在 Python 3 中解压一个可迭代对象会删除可迭代对象吗?

Python - 如何运行 gtk.main() 不会阻塞我的整个应用程序并允许我进行多任务处理?