python - 如何仅检查网格 2d 列表中某个数字的列和行
问题描述
所以说例如这是网格
1 2 3 4 5 6 7 8 9
----------------------------
1 |[[0, 0, 6, 9, 5, 8, 0, 3, 2],
2 | [0, 7, 5, 6, 2, 1, 0, 3, 0],
3 | [0, 8, 5, 0, 0, 6, 0, 0, 0],
4 | [0, 3, 4, 0, 0, 9, 0, 7, 1],
5 | [8, 6, 0, 0, 0, 0, 0, 2, 3],
6 | [3, 0, 0, 1, 7, 0, 0, 5, 0],
7 | [5, 6, 7, 2, 0, 4, 0, 0, 3],
8 | [9, 1, 7, 0, 0, 4, 0, 8, 0],
9 | [3, 4, 8, 0, 0, 0, 0, 0, 1]]
我如何才能找到仅在特定行和列中的所有数字。比如(6,7)的x和y坐标,也就是4,我想知道只有那一行和那一列中不为0的所有数字。所以答案是[8,1,6,9 ,4,4,5,6,7,2,3]。可以有重复,顺序无关紧要。那么我如何找到一个特定的点和一个网格并检查它的列和行中的数字并将其放入列表中?
解决方案
你可以试试这个:
import numpy
l= [[0, 0, 6, 9, 5, 8, 0, 3, 2],
[0, 7, 5, 6, 2, 1, 0, 3, 0],
[0, 8, 5, 0, 0, 6, 0, 0, 0],
[0, 3, 4, 0, 0, 9, 0, 7, 1],
[8, 6, 0, 0, 0, 0, 0, 2, 3],
[3, 0, 0, 1, 7, 0, 0, 5, 0],
[5, 6, 7, 2, 0, 4, 0, 0, 3],
[9, 1, 7, 0, 0, 4, 0, 8, 0],
[3, 4, 8, 0, 0, 0, 0, 0, 1]]
# initializing list
def get_coordinates(array,row,col):
x=[j for j in array[ : , col]if j!=0]
y=[i for i in array[row] if i!=0]
return x+y
# converting list to array
arr = numpy.array(l)
print(get_coordinates(arr,6,5))
推荐阅读
- python - 如何动态访问json文件中的所有项目
- python-3.x - 相关字段查找无效:带有 search_fields 的图标
- bash - 用于检查合并分支的 Bash 脚本
- leaflet - Leaflet - 为什么当我在浏览器中查看 html 时,我在 QGIS 中创建的操作不起作用
- python - 请求不断返回 403 状态,即使遵循 api 文档中的每一步
- mysql - 如何在 MySQL 5.7 中的两个日期之间每月仅计算工作日(周一至周五)?
- javascript - 在窗口调整大小时保持内容位置?
- reporting-services - SSRS 参数字段不会在“预览”模式下更新
- qt-creator - 时间轴播放头在移动时不更新关键帧值
- r - 如何在r中的图表中仅选择重复项