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通过pil模块将raw图片转换成png图片的方法
Mar 16 Python
python创建列表并给列表赋初始值的方法
Jul 28 Python
python urllib爬取百度云连接的实例代码
Jun 19 Python
Python网络爬虫神器PyQuery的基本使用教程
Feb 03 Python
基于pandas数据样本行列选取的方法
Apr 20 Python
Python pymongo模块常用操作分析
Sep 01 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
Aug 23 Python
python matplotlib拟合直线的实现
Nov 19 Python
python如何写出表白程序
Jun 01 Python
解决pytorch 交叉熵损失输出为负数的问题
Jul 07 Python
Python 测试框架unittest和pytest的优劣
Sep 26 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
Oct 10 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读取目录下所有文件的代码
2008/01/07 PHP
php 获取当前访问的url文件名的方法小结
2010/02/08 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
用JavaScript实现单继承和多继承的简单方法
2009/03/29 Javascript
提高网站性能之 如何对待JavaScript
2009/10/31 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
Javascript编程中几种继承方式比较分析
2015/11/28 Javascript
JavaScript中的return语句简单介绍
2015/12/07 Javascript
JS日程管理插件FullCalendar简单实例
2017/02/07 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
2017/09/05 jQuery
p5.js入门教程和基本形状绘制
2018/03/15 Javascript
JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去
2019/07/23 Javascript
Python 描述符(Descriptor)入门
2016/11/20 Python
python中的随机函数小结
2018/01/27 Python
Python实现检测文件MD5值的方法示例
2018/04/11 Python
python使用PIL给图片添加文字生成海报示例
2018/08/17 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
2019/03/29 Python
Pytorch 实现冻结指定卷积层的参数
2020/01/06 Python
Django分组聚合查询实例分享
2020/04/29 Python
Java爬虫技术框架之Heritrix框架详解
2020/07/22 Python
Python ellipsis 的用法详解
2020/11/20 Python
Django自带的用户验证系统实现
2020/12/18 Python
推荐10个HTML5响应式框架
2016/02/25 HTML / CSS
印度服装购物网站:Limeroad
2018/09/26 全球购物
Araks官网:纽约内衣品牌
2020/10/15 全球购物
大学生个人求职信范文
2013/09/21 职场文书
啤酒销售实习自我鉴定
2013/09/24 职场文书
毕业研究生的自我鉴定
2013/11/30 职场文书
点菜员岗位职责范本
2014/02/14 职场文书
爽歪歪广告词
2014/03/20 职场文书
2014年质检员工作总结
2014/11/18 职场文书
2015年班级工作总结范文
2015/04/03 职场文书
2015秋季幼儿园开学通知
2015/07/16 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书