python实现二维数组的对角线遍历


Posted in Python onMarch 02, 2019

本文实例为大家分享了python实现二维数组的对角线遍历,供大家参考,具体内容如下

第一种情况:从左上角出发,右下角结束

要完成的事情,就像下图:

python实现二维数组的对角线遍历

话不多说,直接上Python实现代码与结果展示:

# 输出遍历的索引与其对应的值
A = [[1,2,3],
 [4,5,6],
 [7,8,9]]

n = len(A)
for i in range(n+n-1):
 for j in range(i+1):
 k = i-j
 if k<n and k>=0 and j<n:
 print("对应索引:",j,k, " 对应值:",A[j][k])

python实现二维数组的对角线遍历

第二种情况:从右上角出发,左下角结束

情况如下:

python实现二维数组的对角线遍历

原以为这一种的解决方式会和上一种的一样的简单,但是尝试一下失败了,只有一个“曲线救国”的解决办法:依据索引关系输出结果

自己的Python实现代码与结果展示:

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

# 得到下标索引
size = len(A)
list_i = [] # 第一索引
list_j = [] # 第二索引正序
l1 = []  # 第二索引逆序
for m in range(2*size-1):
 for n in range(m+1):
 k = m-n
 if k<size and k>=0 and n<size:
  list_i.append(n)
  list_j.append(k)

print("第一索引i:\n", list_i)
print("第二索引j:")
for i in range(len(list_j)):
 a = list_j.pop()
 l1.append(a)
print(l1, "\n"*2, "输出结果如下:")

for i in range(len(list_i)):
 print(A[list_i[i]][l1[i]], end= " ")

python实现二维数组的对角线遍历

前辈jiaobuchong的Python实现代码与结果展示:

arr1 = [[1, 2, 3, 4],
 [5, 6, 7, 8],
 [9, 10, 11, 12],
 [13, 14, 15, 16]]

for each_arr in arr1:
 print(each_arr)

tem_arr = [] # 用来记录数组值
rows = len(arr1)
cols = len(arr1[0])


def isValidIndex(x, n):
 return (x >= 0 and x < n)
 # 每一行的每个值的数组下标的差都一样,


for i in range(cols * 2 - 1): # 共输出 cols * 2 - 1 行
 diff = cols - i - 1 # 每一行的差
 for j in range(cols): # 数组中每一个值的下标范围是0到cols
 k = j - diff # 通过一个下标值计算另一个下标值
 if isValidIndex(k, rows): # 剩下就是判断这些下标值是否满足当前的情况, 这一步不怎么好理解
  print(arr1[k][j], ' ', end='')
 print()

python实现二维数组的对角线遍历

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python将ip地址转换成整数的方法
Mar 17 Python
python使用PIL缩放网络图片并保存的方法
Apr 24 Python
python对json的相关操作实例详解
Jan 04 Python
对python中return和print的一些理解
Aug 18 Python
PyQt5打开文件对话框QFileDialog实例代码
Feb 07 Python
python实现手机销售管理系统
Mar 19 Python
python requests指定出口ip的例子
Jul 25 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
Aug 26 Python
Python3 mmap内存映射文件示例解析
Mar 23 Python
Restful_framework视图组件代码实例解析
Nov 17 Python
在python3.9下如何安装scrapy的方法
Feb 03 Python
Python利用机器学习算法实现垃圾邮件的识别
Jun 28 Python
python实现矩阵打印
Mar 02 #Python
python实现杨氏矩阵查找
Mar 02 #Python
Python3.4学习笔记之列表、数组操作示例
Mar 01 #Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
Mar 01 #Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
Mar 01 #Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
Mar 01 #Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
Mar 01 #Python
You might like
c#中的实现php中的preg_replace
2009/12/21 PHP
探讨:parse url解析URL,返回其组成部分
2013/06/14 PHP
深入extjs与php参数交互的详解
2013/06/25 PHP
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
javascript语句中的CDATA标签的意义
2007/05/09 Javascript
javascript数组的扩展实现代码集合
2008/06/01 Javascript
检测jQuery.js是否已加载的判断代码
2011/05/20 Javascript
jQuery前端框架easyui使用Dialog时bug处理
2014/12/05 Javascript
JS触发服务器控件的单击事件(详解)
2016/08/06 Javascript
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
js数据类型检测总结
2018/08/05 Javascript
Angularjs实现数组随机排序的方法
2018/10/02 Javascript
基于JavaScript实现大文件上传后端代码实例
2020/08/18 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
2020/09/01 Javascript
[57:22]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第五场
2018/04/10 DOTA
[01:02:20]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
解决Python的str强转int时遇到的问题
2018/04/09 Python
在windows下Python打印彩色字体的方法
2018/05/15 Python
Python3安装psycopy2以及遇到问题解决方法
2019/07/03 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
2020/01/14 Python
Python生成器generator原理及用法解析
2020/07/20 Python
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
Herschel Supply Co.美国:背包、手提袋及配件
2020/11/24 全球购物
服装厂厂长职责
2013/12/16 职场文书
大学三年的自我评价
2013/12/25 职场文书
安全标语大全
2014/06/10 职场文书
绿色小区申报材料
2014/08/22 职场文书
影视广告专业求职信
2014/09/02 职场文书
法律进社区活动总结
2015/05/07 职场文书
医院消毒隔离制度
2015/08/05 职场文书
2016最新离婚协议书范本及程序
2016/03/18 职场文书
《卧薪尝胆》读后感3篇
2019/12/26 职场文书
SQL Server基本使用和简单的CRUD操作
2021/04/05 SQL Server