首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

获取python 2d列表中2个点之间对角线上的点列表

获取python 2D列表中两个点之间对角线上的点列表,可以通过以下步骤实现:

  1. 首先,确定两个点的坐标。假设两个点分别为(x1, y1)和(x2, y2)。
  2. 确定两个点之间的行和列的差值。计算dx = x2 - x1和dy = y2 - y1。
  3. 确定行和列的增量方向。如果dx和dy都为正数,则行和列的增量方向为向右下方;如果dx为正数,dy为负数,则行的增量方向为向右下方,列的增量方向为向左上方;如果dx为负数,dy为正数,则行的增量方向为向左上方,列的增量方向为向右下方;如果dx和dy都为负数,则行和列的增量方向为向左上方。
  4. 根据行和列的增量方向,以及行和列的差值,生成对角线上的点列表。具体步骤如下:
    • 初始化一个空列表,用于存储对角线上的点。
    • 根据行和列的增量方向,以及行和列的差值,使用循环逐步生成对角线上的点。
    • 在每一步循环中,根据当前的行和列的值,生成一个点的坐标,并将其添加到点列表中。
    • 根据行和列的增量方向,更新当前的行和列的值。
    • 重复上述步骤,直到达到目标点的坐标。

下面是一个示例代码,演示如何实现上述步骤:

代码语言:txt
复制
def get_diagonal_points(matrix, point1, point2):
    x1, y1 = point1
    x2, y2 = point2
    dx = x2 - x1
    dy = y2 - y1

    # 确定行和列的增量方向
    if dx >= 0 and dy >= 0:
        row_increment = 1
        col_increment = 1
    elif dx >= 0 and dy < 0:
        row_increment = 1
        col_increment = -1
    elif dx < 0 and dy >= 0:
        row_increment = -1
        col_increment = 1
    else:
        row_increment = -1
        col_increment = -1

    # 生成对角线上的点列表
    diagonal_points = []
    row = x1
    col = y1
    while row != x2 and col != y2:
        diagonal_points.append(matrix[row][col])
        row += row_increment
        col += col_increment

    return diagonal_points

使用示例:

代码语言:txt
复制
matrix = [[1, 2, 3],
          [4, 5, 6],
          [7, 8, 9]]

point1 = (0, 0)
point2 = (2, 2)

diagonal_points = get_diagonal_points(matrix, point1, point2)
print(diagonal_points)

输出结果为:[1, 5, 9]

以上代码是一个简单的实现示例,可以根据实际需求进行修改和优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python必知坑(2):嵌套列表

点击上方“Python与算法社区”,选择“星标”公众号 文章来自:Python-100-Days 编辑:zglg 1 嵌套列表 Python中有一种内置数据类型叫列表(list),它是一种容器,可以用来承载其他对象...(准确说是其他对象引用),列表对象可以称为列表元素,很明显我们可以把列表作为列表元素,这就是所谓嵌套列表。...嵌套列表可以模拟出现实表格、矩阵、2D游戏地图(如植物大战僵尸花园)、棋盘(如国际象棋、黑白棋)等。 2 识别坑 在使用嵌套列表时要小心,否则很可能遭遇非常尴尬情况,下面是一个小例子。...知道了这一,我们可以回过头看看刚才程序,我们对列表进行[[0]* 3] * 5操作时,仅仅是将[0, 0, 0] 这个列表地址进行了复制,并没有创建新列表对象。...所以,容器虽然有5个元素,但是这5个元素引用了同一个列表对象。这一可以通过id函数检查scores[0]和scores[1]地址得到证实。在此我们举一个小例子,读者朋友们可以敲一敲加深印象。

5.7K20
  • Python如何获取列表重复元素索引?

    一、前言 昨天分享了一个文章,Python如何获取列表重复元素索引?,后来【瑜亮老师】看到文章之后,又提供了一个健壮性更强代码出来,这里拿出来给大家分享下,一起学习交流。...= 1] 这个方法确实很不错,比文中那个方法要全面很多,文中那个解法,只是针对问题,给了一个可行方案,确实换个场景的话,健壮性确实没有那么好。 二、总结 大家好,我是皮皮。...这篇文章主要分享了Python如何获取列表重复元素索引问题,文中针对该问题给出了具体解析和代码演示,帮助粉丝顺利解决了问题。...最后感谢粉丝【KKXL螳螂】提问,感谢【瑜亮老师】给出具体解析和代码演示。

    13.3K10

    python知识100篇系列(3)-列表反转几种方式

    什么是列表(list)?List是python一种数据类型,它由一组有序元素组成。支持字符、数字、字符串甚至也可以包含列表列表中有列表,嵌套),元素间用逗号进行分隔。列表用[]进行标识。...在实际应用,有时候需要将列表中元素位置进行反转处理,可以使用如下几种方式:列表对象reverse()方法: 列表对象自带方法,最容易使用;此方法没有返回值,执行后直接将列表元素进行原地逆序排列...,需要使用list函数转换一下;伪代码如下:list_k = ['1','2','3',4,5,6]list_kr = reversed(list_k)list_k = list(list_k)使用列表切片当我们想要访问一个列表在某个范围元素时候...,我们就需要使用到切片操作;我们可以使用"变量名起始索引:结束索引"方式来访问列表某个范围元素;Python列表索引有两种,一种是正向索引,另一种是反向索引;列表反转主要用到反向索引,即负步长切片...,默认列表长度,z:为切片步长,默认1,-1表示从最后一个元素开始切片;使用列表生成式(List Comprehensions)列表生成式是python内置比较简单但是功能强大用于生成list

    6210

    Python字符串、列表、元组、字典之间相互转换

    阅读本文需要5分钟 作者介绍:公众号一位Python零基础到大神粉丝,再次感谢!!!...使用Python字符串内置方法split() Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串 语法:str.split(str...字符串详解:走起 二、列表(list) 列表转字符串 利用‘’.join()将列表内容拼接程一个字符串 Python join() 方法用于将序列元素(必须是str) 以指定字符(’'中指定...利用python内置方法dict()和zip()将两个列表转换为字典 dict() 函数用于创建一个字典。...zip() 函数用于将可迭代对象作为参数,将对象对应元素打包成一个个元组,然后返回由这些元组组成列表

    11.4K11

    python代码实现将列表重复元素之间内容全部滤除

    引言 因为在学习遗传算法路径规划内容,其中遗传算法涉及到了种群初始化,而在路径规划种群初始化,种群初始化就是先找到一条条从起点到终点路径,也因此需要将路径重复节点之间路径删除掉(避免走回头路...然后我在搜资料时候发现,许多代码都是滤除列表相同元素,并没有滤除相同元素中间段代码,因此就自己写了。 2....代码部分 我在python程序把每一条路径用列表表示,因此每一个列表就是一条路径比如 a = [0,1,3,4,5,6,3,4,7,3,5,8,9,8,10,13,11,12,10] a就是一条路径起点为...x==i] #将重复内容索引全部添加进c列表 a = a[0:c[0]]+a[c[-1]:] #a列表切片在重组 return (a) fiter = Fiter() #实例化...总结 到此这篇关于python代码实现将列表重复元素之间内容全部滤除文章就介绍到这了,更多相关python列表重复元素滤除内容请搜索ZaLou.Cn以前文章或继续浏览下面的相关文章希望大家以后多多支持

    2K10

    python对复数取绝对值来计算两之间距离

    参考链接: Python复数1(简介) 在二维平面会涉及到两个变量x, y,并且有的时候需要计算两个二维坐标之间距离,这个时候将二维坐标转化为复数的话那么就可以使用pythonabs绝对值函数对复数取绝对值来计算两个之间距离或者是计算复数模...,当我们将两个复数对应坐标相减然后对其使用abs绝对值函数那么得到就是两之间距离,对一个复数取绝对值得到就是复数模长  if __name__ == '__main__':     points...= [[1, 0], [0, 1], [2, 1], [1, 2]]     for i in points:         print(i)     # 使用python解包将每个转换为复数表现形式...    points = [complex(*z) for z in points]     for i in range(len(points)):         # 计算每个复数模长        ...points[i] = abs(points[i])     print(points)     # 比如计算(0, 1) (1, 2)两之间距离     point1 = complex(0, 1

    2.3K20

    Numpy库简单用法(3)

    any检查数组是否至少有一个True,all检查是否全都是True。 (4)排序 可以使用sort方法进行排序,与python内建列表一样。...常用函数如下表: 函数 描述 diag 将一个方阵对角(或非对角)元素作为一个一维数组返回,或将一维数组转换成一个方阵,并且在非对角线上有零 dot 矩阵乘 trace 计算对角元素和 det...一个重要功能,填补了python内建random模块不足,例如可以通过normal获得一个4*4正态分布样本数组。...numpy.random部分函数列表 函数 描述 seed 向随机数生成器传递随机种子 shuffle 随机排列一个序列 rand 从均匀分布抽取样本 randint 从给定由低到高范围抽取随机整数...利用python实现一个1000步随机漫步:

    44910

    python常见矩阵运算

    参考链接: NumPy Python数据类型对象(dtype) 原文链接:https://blog.csdn.net/taxueguilai1992/article/details/46581861...  pythonnumpy库提供矩阵运算功能,因此我们在需要矩阵运算时候,需要导入numpy包。 ...=mat(random.randint(2,8,size=(2,5)); #产生一个2-8之间随机整数矩阵 data6=mat(eye(2,2,dtype=int)); #产生一个2*2对角矩阵 a1...它们之间转换:  a1=[[1,2],[3,2],[5,2]];//列表 a2=array(a1);//将列表转换成二维数组 a3=array(a1);//将列表转化成矩阵 a4=array(a3);...//将矩阵转换成数组 a5=a3.tolist();//将矩阵转换成列表 a6=a2.tolist();//将数组转换成列表 这里可以发现三者之间转换是非常简单,这里需要注意是,当列表是一维时候

    1.1K30

    Leetcode 1424. Diagonal Traverse II

    Solution **解析:**Version 1,根据矩阵对角线元素规律,行坐标与列坐标和相等元素属于同一对角线,由于对角线从左下到右上,因此应该同一对角线元素应该按列坐标的顺序排列,将所有元素按...Version 2,每一条对角线上数据保存到一个列表列表索引为行坐标与列坐标的和,由于每一条对角线元素是按照行顺序保存,因此合并时应将顺序反转。...Version 3把问题看做是一个树遍历问题(广度优先搜索),每个节点只关心其下边及其右侧,下边只有第一行才有,右侧每个都有,否则会出现重复搜索,要对是否存在进行判断,搜索顺序使用队列实现

    31420

    PYTHON替代MATLAB在线性代数学习应用(使用Python辅助MIT 18.06 Linear Algebra学习)

    好在Python之中,如果不考虑转换速度,不同模块之间共享数据非常容易。前面的演示已经有了将NumPy矩阵转换为SymPy矩阵,以及将SymPy计算结果转换到NumPy实例。...、获取指定行向量和列向量、正交判定 积也称作乘、内积,是向量、矩阵中最常用一种运算。...获取矩阵特定行向量和列向量,在NumPy/SymPy中都是重载了Python语言列表(数组)操作符,所以方法都是相同。...这也意味着,在对称复矩阵对角线上元素必须都是实数。否则不可能做到共轭后与自身相同。 复矩阵组成正交矩阵称为酉矩阵。...上面的计算,变量s代表了SVD分解之后对角矩阵,实际是AAᵀ矩阵或者AᵀA矩阵特征值再开方值。使用NumPy做完SVD分解后,直接保存为列表类型。

    5.4K51

    A*寻路初探(转载)

    例子这个方法需求会变得更多,因为我们从起点方格以外获取了不止一个方格。 H值可以用不同方法估算。...我们这里使用方法被称为曼哈顿方法,它计算从当前格到目的格之间水平和垂直方格数量总和,忽略对角线方向。然后把结果乘以10。...这被成为曼哈顿方法是因为它看起来像计算城市从一个地方到另外一个地方街区数,在那里你不能沿对角线方向穿过街区。很重要,我们忽略了一切障碍物。...,我们使用简单2D方形图。...类似的,你可以为一张确定地形图创建路径系统,路径一般是路上,或者地牢通道转折。作为游戏设计者,你可以预设这些路径。两个路径被认为是相邻的如果他们之间线上没有障碍的话。

    1.3K10

    基础渲染系列(一)图形学基石——矩阵

    这样做好处是它将把组件放到列表,而不是创建一个新数组。 但在我看来,这不是一个关键优化,但是当你需要经常获取组件时,使用list是个好习惯。...他们只是有不同起点而已。 如果改为以45°增量旋转怎么办? 这将产生位于XY平面对角线上。 由于到原点距离没有变化,因此我们必须以(±√½,±√½)形式坐标结束。...实际上,我们执行乘法是 ? , 这是矩阵乘法。2 x 2矩阵第一列表示X轴,第二列表示Y轴。 ? (用2D矩阵定义X和Y轴) 通常,将两个矩阵相乘时,在第一个矩阵逐行,在第二个矩阵逐列。...将一个抽象只读属性添加到Transformation以检索转换矩阵。 ? 它Apply方法不再需要抽象。将仅获取矩阵并执行乘法。...但是,我们不会使用该方法,因为有一些有用转换会改变底部行。 5 投影矩阵 到目前为止,我们一直在将从3D一个位置转换为3D空间中另一个位置。但是这些最终如何在2D显示器上绘制呢?

    4.9K23

    常见矩阵运算Python

    pythonnumpy库提供矩阵运算功能,因此我们在需要矩阵运算时候,需要导入numpy包。...data5=mat(random.randint(2,8,size=(2,5)); #产生一个2-8之间随机整数矩阵 data6=mat(eye(2,2,dtype=int)); #产生一个2*2对角矩阵...a1=[1,2,3]; a2=mat(diag(a1)); #生成一个对角线为1、2、3对角矩阵 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 3.常见矩阵运算...它们之间转换: a1=[[1,2],[3,2],[5,2]];//列表 a2=array(a1);//将列表转换成二维数组 a3=array(a1);//将列表转化成矩阵 a4=array(a3);/.../将矩阵转换成数组 a5=a3.tolist();//将矩阵转换成列表 a6=a2.tolist();//将数组转换成列表 1 2 3 4 5 6 这里可以发现三者之间转换是非常简单,这里需要注意

    2.4K30

    Myers’Diff之贪婪算法

    水平(右)移动表示从文件A删除,垂直(向下)移动表示在文件B插入。如果存在匹配字符,则还可以对角移动,以匹配结束。 解决方案是包含最多对角线迹线。...LCS是轨迹对角线,SES是轨迹水平和垂直移动。例如,LCS长度为4个字符,SES长度为5个差异。 snake: 一条snake代表走一步。...例如,标记为“ 2”线上三个端点全部具有2个水平或垂直移动。 外循环次数 从(x、y)组成矩形左上角,到右下角。最长路径莫过于所有对角线都不经过。...所以,我们可以这么来走,从(2,4)点开始向下走到(2,5),由于(2,5)和(3,6)之间存在一个对角线,可以走到(3,6)。...对于正常中间情况,我们选择从x值较大任何相邻行开始。这保证了我们到达k线上尽可能远

    79210

    Python AI 教学|SVD(Singular Value Decomposition)算法及应用

    特征值分解是将一个矩阵分解成下面的形式: Q是这个矩阵A特征向量组成矩阵,Σ是一个对角矩阵,每一个对角线上元素就是一个特征值。一个矩阵一组特征向量是一组正交向量。...下图是一个对角矩阵,其除了对角线上元素外,其余均为0。形如: 该矩阵对角元素便是奇异值(singular value),一般情况下奇异值是按从大到小排列。...为了节省存储空间,在奇异值分解算法,只存储σ 值,而不是一个对角矩阵。...2 SVD算法实现 2.1分解过程 【1】算法实现: 【2】运行结果(python3): 2.2重构过程 由上图可知Sigma,前两个比后面两个大了很多,我们可以将最后两个值去掉...使用另两种相似度计算实现对未观看电影评级: 函数说明(三) 【1】range函数 是一个python自带来创建包含算术级数列表。它最常用于for循环。

    2.6K40

    Myers‘Diff之贪婪算法

    水平(右)移动表示从文件A删除,垂直(向下)移动表示在文件B插入。如果存在匹配字符,则还可以对角移动,以匹配结束。 解决方案是包含最多对角线迹线。...LCS是轨迹对角线,SES是轨迹水平和垂直移动。例如,LCS长度为4个字符,SES长度为5个差异。 snake: 一条snake代表走一步。...例如,标记为“ 2”线上三个端点全部具有2个水平或垂直移动。 外循环次数 从(x、y)组成矩形左上角,到右下角。最长路径莫过于所有对角线都不经过。也就是只走X和Y长度即最大长度=N+M。...所以,我们可以这么来走,从(2,4)点开始向下走到(2,5),由于(2,5)和(3,6)之间存在一个对角线,可以走到(3,6)。...对于正常中间情况,我们选择从x值较大任何相邻行开始。这保证了我们到达k线上尽可能远

    2.8K20

    Python创建二维数组正确姿势

    List (列表)是 Python 中最基本数据结构。在用法上,它有点类似数组,因为每个列表都有一个下标,下标从 0 开始。因此,我们可以使用 list[1] 来获取下标对应值。...可以简单理解为,Python 列表是长度可变数组。一般而已,我们用于列表创建都是一维数组。那么问题来,我们如果创建多维数组呢? 01 列表能创建多维数组?...相比 List 对象,NumPy 数组有以下优势: 1.这是因为列表 list 元素在系统内存是分散存储,而 NumPy 数组存储在一个均匀连续内存块。...2.Numpy数组能够运用向量化运算来处理整个数组,速度较快;而 Python 列表则通常需要借助循环语句遍历列表,运行效率相对来说要差。...() 是创建一个 NxN 对角矩阵,对角矩阵是对角线上对角线之外元素皆为 0 矩阵。

    8K20

    炒鸡简单,带你快速撸一遍Numpy代码!

    关于Numpy需要知道几点: NumPy 数组在创建时有固定大小,不同于Python列表(可以动态增长)。更改ndarray大小将创建一个新数组并删除原始数据。...切片和筛选 ndarray切片 前面学了选择ndarray某个元素方法,这里我们学习获取ndarray子集方法——切片。...一个常用切片 以列形式获取最后一列数据: a[:,3:] out: array([[ 3], [ 7], [11], [15]]) 以一维数组形式获取最后一列数据...默认k = 0,取主对角线; k = 1时,取主对角线上面1行元素; k = -1时,取主对角线下面1行元素。 思考:这个函数只能选择主对角线上元素,那如果想要获取对角线上元素呢?...,本文中涉及到都是偏基础/常用知识,大家在学习/工作,可以多尝试搜索Numpy+你想要实现功能来对Numpy进行探索,相信你,一定会爱上这个工具

    1.6K40
    领券