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快速排序代码实例
Nov 21 Python
python实现的简单猜数字游戏
Apr 04 Python
Python使用微信SDK实现的微信支付功能示例
Jun 30 Python
python使用TensorFlow进行图像处理的方法
Feb 28 Python
Python玩转PDF的各种骚操作
May 06 Python
Pytorch中实现只导入部分模型参数的方式
Jan 02 Python
利用pytorch实现对CIFAR-10数据集的分类
Jan 14 Python
详解django使用include无法跳转的解决方法
Mar 19 Python
python 追踪except信息方式
Apr 25 Python
Python celery原理及运行流程解析
Jun 13 Python
没编程基础可以学python吗
Jun 17 Python
python非标准时间的转换
Jul 25 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中在PDO中使用事务(Transaction)
2011/05/14 PHP
三种php连接access数据库方法
2013/11/11 PHP
laravel安装zend opcache加速器教程
2015/03/02 PHP
摘自织梦CMS中的图片处理类
2015/08/08 PHP
深入理解PHP变量的值类型和引用类型
2015/10/21 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
js 取时间差去掉周六周日实现代码
2012/12/25 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
jQuery中的jQuery()方法用法分析
2014/12/27 Javascript
Javascript中的方法和匿名方法实例详解
2015/06/13 Javascript
javascript中window.open在原来的窗口中打开新的窗口(不同名)
2015/11/15 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
2016/07/27 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
2016/08/02 Javascript
ES6新特性之Object的变化分析
2017/03/31 Javascript
jQuery插件imgAreaSelect基础讲解
2017/05/26 jQuery
Vue框架之goods组件开发详解
2018/01/25 Javascript
Vue中使用webpack别名的方法实例详解
2018/06/19 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
详解React项目中碰到的IE问题
2019/03/14 Javascript
详解服务端预渲染之Nuxt(介绍篇)
2019/04/07 Javascript
Python读取图片EXIF信息类库介绍和使用实例
2014/07/10 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
如何在python中使用selenium的示例
2017/12/26 Python
Python+matplotlib实现填充螺旋实例
2018/01/15 Python
简单谈谈Python的pycurl模块
2018/04/07 Python
Python学习_几种存取xls/xlsx文件的方法总结
2018/05/03 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
Python利用Django如何写restful api接口详解
2018/06/08 Python
python lambda函数及三个常用的高阶函数
2020/02/05 Python
教师求职自荐书
2014/06/14 职场文书
私人委托书格式
2014/09/10 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
见习报告格式范文
2014/11/08 职场文书
财务经理岗位职责范本
2015/04/08 职场文书
接收函
2019/04/22 职场文书
《曾国藩家书》读后感——读家书,立家风
2019/08/21 职场文书