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实现在Linux系统下更改当前进程运行用户
Feb 04 Python
python执行等待程序直到第二天零点的方法
Apr 23 Python
python中实现数组和列表读取一列的方法
Apr 03 Python
Python实现iOS自动化打包详解步骤
Oct 03 Python
Python解析命令行读取参数之argparse模块
Jul 26 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
Jul 31 Python
python机器学习包mlxtend的安装和配置详解
Aug 21 Python
python智联招聘爬虫并导入到excel代码实例
Sep 09 Python
使用Tensorflow实现可视化中间层和卷积层
Jan 24 Python
django 模型字段设置默认值代码
Jul 15 Python
浅谈anaconda python 版本对应关系
Oct 07 Python
Pycharm安装第三方库失败解决方案
Nov 17 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
Zend公司全球首推PHP认证
2006/10/09 PHP
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
使用tp框架和SQL语句查询数据表中的某字段包含某值
2019/10/18 PHP
一端时间轮换的广告
2006/06/26 Javascript
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
有关javascript的性能优化 (repaint和reflow)
2013/04/12 Javascript
JavaScript实现网页对象拖放功能的方法
2015/04/15 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
利用Angularjs和bootstrap实现购物车功能
2016/08/31 Javascript
seajs模块之间依赖的加载以及模块的执行
2016/10/21 Javascript
jquery滚动条插件(可以自定义)
2016/12/11 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
js实现移动端微信页面禁止字体放大
2017/02/16 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
vue表单自定义校验规则介绍
2018/08/28 Javascript
小程序获取当前位置加搜索附近热门小区及商区的方法
2019/04/08 Javascript
js实现图片粘贴到网页
2019/12/06 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作
2020/07/22 Javascript
[02:42]2014DOTA2国际邀请赛 三冰专访:我会打到Ti20
2014/07/13 DOTA
Python绘制3D图形
2018/05/03 Python
python实现七段数码管和倒计时效果
2019/11/23 Python
材料加工硕士生求职信
2013/10/10 职场文书
家长对老师的评语
2014/04/18 职场文书
经济信息系毕业生自荐信
2014/06/02 职场文书
专升本学生毕业自我鉴定
2014/10/04 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
医院见习总结
2015/06/24 职场文书
数据结构课程设计心得体会
2016/01/15 职场文书
2019同学聚会主持词
2019/05/06 职场文书
Go语言切片前或中间插入项与内置copy()函数详解
2021/04/27 Golang
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis