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 代码优化详解
Oct 27 Python
python使用socket进行简单网络连接的方法
Apr 29 Python
centos6.8安装python3.7无法import _ssl的解决方法
Sep 17 Python
Python读取txt内容写入xls格式excel中的方法
Oct 11 Python
python使用threading.Condition交替打印两个字符
May 07 Python
windows10下安装TensorFlow Object Detection API的步骤
Jun 13 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
Jun 14 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
Aug 08 Python
django多种支付、并发订单处理实例代码
Dec 13 Python
python图形开发GUI库pyqt5的基本使用方法详解
Feb 14 Python
Python图像处理库PIL的ImageDraw模块介绍详解
Feb 26 Python
详解Python为什么不用设计模式
Jun 24 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
一个简单的自动发送邮件系统(二)
2006/10/09 PHP
PHP性能优化准备篇图解PEAR安装
2011/12/05 PHP
php中并发读写文件冲突的解决方案
2013/10/25 PHP
php实现的简单数据库操作Model类
2016/11/16 PHP
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
javascript hashtable实现代码
2009/10/13 Javascript
JS类的封装及实现代码
2009/12/02 Javascript
wap手机图片滑动切换特效无css3元素js脚本编写
2014/07/28 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
JavaScript中的this关键字使用详解
2015/08/14 Javascript
IntersectionObserver API 详解篇
2016/12/11 Javascript
jQuery操作json常用方法示例
2017/01/04 Javascript
如何用js判断dom是否有存在某class的值
2017/02/13 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
详解微信小程序中的页面代码中的模板的封装
2017/10/12 Javascript
微信小程序实现传参数的几种方法示例
2018/01/10 Javascript
Vue微信项目按需授权登录策略实践思路详解
2018/05/07 Javascript
js实现简单选项卡功能
2020/03/23 Javascript
vue1.0和vue2.0的watch监听事件写法详解
2018/09/11 Javascript
解决微信小程序中的滚动穿透问题
2019/09/16 Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
2020/03/09 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
[01:18:45]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第三场2月1日
2021/03/11 DOTA
python+numpy实现的基本矩阵操作示例
2019/07/19 Python
django+echart数据动态显示的例子
2019/08/12 Python
opencv 获取rtsp流媒体视频的实现方法
2019/08/23 Python
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
办公室文员自荐书
2014/02/03 职场文书
关于环保的建议书400字
2014/03/12 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
关于军训的感想
2015/08/07 职场文书
Java Socket实现Redis客户端的详细说明
2021/05/26 Redis
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫
用Python仅20行代码编写一个简单的端口扫描器
2022/04/08 Python
MySQL索引失效十种场景与优化方案
2023/05/08 MySQL