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网络编程学习笔记(九):数据库客户端 DB-API
Jun 09 Python
python基础教程之缩进介绍
Aug 29 Python
Python使用修饰器执行函数的参数检查功能示例
Sep 26 Python
Python内置模块hashlib、hmac与uuid用法分析
Feb 12 Python
python让列表倒序输出的实例
Jun 25 Python
python 平衡二叉树实现代码示例
Jul 07 Python
手把手教你如何安装Pycharm(详细图文教程)
Nov 28 Python
使用Django开发简单接口实现文章增删改查
May 09 Python
Python如何实现定时器功能
May 28 Python
python中os包的用法
Jun 01 Python
Python datetime模块的使用示例
Feb 02 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
Feb 04 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
第十三节 对象串行化 [13]
2006/10/09 PHP
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
2010/12/29 PHP
PHP培训要多少钱
2017/06/06 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
2019/04/05 PHP
JavaScript中创建对象和继承示例解读
2014/02/12 Javascript
JavaScript中的包装对象介绍
2015/01/27 Javascript
seajs学习教程之基础篇
2016/10/20 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
Vue-router 中hash模式和history模式的区别
2018/07/24 Javascript
webpack4 + react 搭建多页面应用示例
2018/08/03 Javascript
微信小程序自定义toast弹窗效果的实现代码
2018/11/15 Javascript
详解服务端预渲染之Nuxt(介绍篇)
2019/04/07 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
2019/04/26 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
js实现碰撞检测
2021/01/29 Javascript
[05:09]DOTA2-DPC中国联赛2月22日Recap集锦
2021/03/11 DOTA
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
Python爬取APP下载链接的实现方法
2016/09/30 Python
Python中字典和集合学习小结
2017/07/07 Python
Python基础教程之内置函数locals()和globals()用法分析
2018/03/16 Python
详解python中TCP协议中的粘包问题
2019/03/22 Python
在vscode中配置python环境过程解析
2019/09/28 Python
python lambda函数及三个常用的高阶函数
2020/02/05 Python
如何在django中实现分页功能
2020/04/22 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
2020/11/11 Python
Python plt 利用subplot 实现在一张画布同时画多张图
2021/02/26 Python
顶级宝石首饰网络零售商:Angara
2016/10/25 全球购物
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
会计实习期自我鉴定
2013/10/06 职场文书
培训班主持词
2014/03/28 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
个人事迹材料范文
2014/12/29 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
面试通知单大全
2015/04/20 职场文书