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中的私有变量
Feb 28 Python
python 对key为时间的dict排序方法
Oct 17 Python
python获取服务器响应cookie的实例
Dec 28 Python
Python2与Python3的区别实例分析
Apr 11 Python
从列表或字典创建Pandas的DataFrame对象的方法
Jul 06 Python
python将字符串list写入excel和txt的实例
Jul 20 Python
如何使用selenium和requests组合实现登录页面
Feb 03 Python
使用python实现飞机大战游戏
Mar 23 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
May 20 Python
利用python中的matplotlib打印混淆矩阵实例
Jun 16 Python
Python ckeditor富文本编辑器代码实例解析
Jun 22 Python
使用keras实现非线性回归(两种加激活函数的方式)
Jul 05 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
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
优化PHP代码的53条建议
2008/03/27 PHP
PHP中MD5函数使用实例代码
2008/06/07 PHP
php session处理的定制
2009/03/16 PHP
php 使用post,get的一种简洁方式
2010/04/25 PHP
PHP GD库相关图像生成和处理函数小结
2016/09/30 PHP
不使用XMLHttpRequest实现异步加载 Iframe和script
2012/10/29 Javascript
页面使用密码保护代码
2013/04/10 Javascript
JQuery each()嵌套使用小结
2014/04/18 Javascript
jQuery如何获取动态添加的元素
2016/06/24 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
2016/10/27 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
js实现模糊匹配功能
2017/02/15 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
JS实现简易换图时钟功能分析
2018/01/04 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
关于Vue中axios的封装实例详解
2019/10/20 Javascript
基于ts的动态接口数据配置的详解
2019/12/18 Javascript
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
如何封装Vue Element的table表格组件
2021/02/06 Vue.js
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
python密码错误三次锁定(实例讲解)
2017/11/14 Python
Python实现简单生成验证码功能【基于random模块】
2018/02/10 Python
简单了解Python3里的一些新特性
2019/07/13 Python
用Python做一个久坐提醒小助手的示例代码
2020/02/10 Python
Django Admin后台添加数据库视图过程解析
2020/04/01 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
2020/10/27 Python
详解background属性的8个属性值(面试题)
2020/11/02 HTML / CSS
艺术设计专业求职自荐信
2014/05/19 职场文书
群众路线教育实践活动思想汇报(2014特荐篇)
2014/09/16 职场文书
党的群众路线教育实践活动个人对照检查材料(公安)
2014/11/05 职场文书
民事起诉书范本
2015/05/19 职场文书
教育教学读书笔记
2015/07/02 职场文书
pytorch查看网络参数显存占用量等操作
2021/05/12 Python