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函数式编程
Jun 09 Python
Python设置Socket代理及实现远程摄像头控制的例子
Nov 13 Python
深入学习python的yield和generator
Mar 10 Python
Python实现快速排序算法及去重的快速排序的简单示例
Jun 26 Python
Python连接PostgreSQL数据库的方法
Nov 28 Python
Python字典,函数,全局变量代码解析
Dec 18 Python
python求质数的3种方法
Sep 28 Python
python 串行执行和并行执行实例
Apr 30 Python
python中Django文件上传方法详解
Aug 05 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
Dec 08 Python
python3实现Dijkstra算法最短路径的实现
May 12 Python
Python采集股票数据并制作可视化柱状图
Apr 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
php 定界符格式引起的错误
2011/05/24 PHP
PHP时间戳与日期之间转换的实例介绍
2013/04/19 PHP
基于empty函数的判断详解
2013/06/17 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
2012/09/02 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
javascript 用函数语句和表达式定义函数的区别详解
2014/01/06 Javascript
javascript编程异常处理实例小结
2015/11/30 Javascript
javascript实现列表切换效果
2016/05/02 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
JavaScript中的FileReader图片预览上传功能实现代码
2017/07/24 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
2017/09/20 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
跟老齐学Python之玩转字符串(1)
2014/09/14 Python
详细讲解Python中的文件I/O操作
2015/05/24 Python
python创建进程fork用法
2015/06/04 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
Django之创建引擎索引报错及解决详解
2019/07/17 Python
使用python实现对元素的长截图功能
2019/11/14 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
opencv3/C++实现视频背景去除建模(BSM)
2019/12/11 Python
python Canny边缘检测算法的实现
2020/04/24 Python
美国NBA官方商店:NBA Store
2019/04/12 全球购物
美国最大和最受信任的二手轮胎商店:Bestusedtires.com
2020/06/02 全球购物
Can a struct inherit from another class? (结构体能继承类吗)
2014/07/22 面试题
KTV的创业计划书范文
2014/02/02 职场文书
《海伦?凯勒》教学反思
2014/04/17 职场文书
《她是我的朋友》教学反思
2014/04/26 职场文书
给校长的建议书400字
2014/05/15 职场文书
空气的环保标语
2014/06/12 职场文书
学生安全责任书范本
2014/07/24 职场文书
教师节寄语2015
2015/03/23 职场文书
原告离婚代理词
2015/05/23 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书