Python 旋转打印各种矩形的方法


Posted in Python onJuly 09, 2019

打印旋转矩阵应该是很经典的算法问题了。

题目描述如下:

给定一个m * n要素的矩阵。按照螺旋顺序,返回该矩阵的所有要素。

思路:1,先定义矩阵的左上和右下的坐标,然后通过两个坐标来打印这一圈矩阵;

2,将左上的坐标下右下移动,右下的坐标向左上移动,来缩小打印圈,进行下一圈矩阵的打印;

3,一直缩小打印直到结束。

代码:

def print_circle(matrix,up_hang,up_lie,down_hang,down_lie):
  result=[]
  
  if up_lie==down_hang and down_hang==down_lie: # 若只有一个元素
    result.append(matrix[up_hang][up_lie])
  elif up_lie==down_hang or up_lie==down_lie:  #若只有一行或一列元素
    if up_lie==down_hang:
      while up_lie <= down_lie:
        result.append(matrix[up_hang][up_lie])
        up_lie+=1
    elif up_lie==down_lie:
      while up_hang <=down_hang:
        result.append(matrix[up_hang][up_lie])
        up_hang+=1
# return result    #注意对齐方式,其决定了作用的区间范围,很关键    
    return result   
  i=up_hang
  j=up_lie
  while j<down_lie:
    result.append(matrix[i][j])
    j+=1
  while i<down_hang:
    result.append(matrix[i][j])
    i+=1
  while j>up_lie:
    result.append(matrix[i][j])
    j-=1
  while i>up_hang:
    result.append(matrix[i][j])
    i-=1
  return result

#matrix=[[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]
#matrix=[[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25]]
matrix=[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
#matrix=[[1,2,3],[4,5,6],[7,8,9]]
#matrix=[[1,2],[3,4]]
re_mat=[]
up_hang=0
up_lie=0
down_hang=3
down_lie=3
if down_hang>down_lie:
  flag=down_lie
else:
  flag=down_hang
while flag!=0:       #flag决定了一个矩阵需要打印多少圈
  temp=print_circle(matrix,up_hang,up_lie,down_hang,down_lie)
  re_mat.extend(temp)
  up_hang+=1
  up_lie+=1
  down_hang-=1
  down_lie-=1
  flag=flag/2
print(re_mat)

总结:python对于代码的对齐方式要求的比较严格,对齐方式直接决定了函数或者判断条件的作用域,要重视啊。

以上这篇Python 旋转打印各种矩形的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python translator使用实例
Sep 06 Python
50行代码实现贪吃蛇(具体思路及代码)
Apr 27 Python
利用Python学习RabbitMQ消息队列
Nov 30 Python
Python生成器以及应用实例解析
Feb 08 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
May 04 Python
python对视频画框标记后保存的方法
Dec 07 Python
由Python编写的MySQL管理工具代码实例
Apr 09 Python
python KNN算法实现鸢尾花数据集分类
Oct 24 Python
python django中8000端口被占用的解决
Dec 17 Python
关于Pytorch的MLP模块实现方式
Jan 07 Python
关于tf.reverse_sequence()简述
Jan 20 Python
解决Tensorflow占用GPU显存问题
Feb 03 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
Jul 09 #Python
python下的opencv画矩形和文字注释的实现方法
Jul 09 #Python
Python3 执行系统命令并获取实时回显功能
Jul 09 #Python
利用python开发app实战的方法
Jul 09 #Python
python设置环境变量的作用和实例
Jul 09 #Python
python版百度语音识别功能
Jul 09 #Python
利用Python实现Shp格式向GeoJSON的转换方法
Jul 09 #Python
You might like
php强制用户转向www域名的方法
2015/06/19 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
脚本吧 - 幻宇工作室用到js,超强推荐share.js
2006/12/23 Javascript
filemanage功能中用到的common.js
2007/04/08 Javascript
IE autocomplete internet explorer's autocomplete
2007/06/30 Javascript
Jquery的Tabs内容轮换效果实现代码,几行搞定
2014/02/12 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
javascript实现验证IP地址等相关信息代码
2015/05/10 Javascript
jQuery实现不断闪烁文字的方法
2015/05/15 Javascript
javascript类型系统 Array对象学习笔记
2016/01/09 Javascript
剖析Node.js异步编程中的回调与代码设计模式
2016/02/16 Javascript
js实现交通灯效果
2017/01/13 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
vue 点击按钮增加一行的方法
2018/09/07 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
Vue 中使用 typescript的方法详解
2020/02/17 Javascript
JS数组push、unshift、pop、shift方法的实现与使用方法示例
2020/04/29 Javascript
深入了解Python数据类型之列表
2016/06/24 Python
python机器学习之贝叶斯分类
2018/03/26 Python
浅谈python numpy中nonzero()的用法
2018/04/02 Python
Jupyter notebook远程访问服务器的方法
2018/05/24 Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
2019/03/01 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
2019/06/26 Python
Python字符串大小写转换拼接删除空白
2019/09/19 Python
Pytorch 图像变换函数集合小结
2021/02/01 Python
加拿大购物频道:The Shopping Channel
2016/07/21 全球购物
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
盛大二次面试题
2016/11/18 面试题
初一地理教学反思
2014/01/16 职场文书
高二物理教学反思
2014/02/08 职场文书
学习雷锋精神心得体会范文
2014/03/12 职场文书
工作保证书范文
2014/04/29 职场文书
2014年结对帮扶工作总结
2014/12/17 职场文书
表扬通报怎么写
2015/01/16 职场文书
护士心得体会范文
2016/01/25 职场文书
Python实现双向链表
2022/05/25 Python