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 strip lstrip rstrip使用方法
Sep 06 Python
python中sets模块的用法实例
Sep 30 Python
Python实现网站文件的全备份和差异备份
Nov 30 Python
Python自定义scrapy中间模块避免重复采集的方法
Apr 07 Python
基于Python中capitalize()与title()的区别详解
Dec 09 Python
python实现远程通过网络邮件控制计算机重启或关机
Feb 22 Python
Django实现学员管理系统
Feb 26 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
Aug 26 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
Sep 05 Python
树莓派安装OpenCV3完整过程的实现
Oct 10 Python
Numpy之将矩阵拉成向量的实例
Nov 30 Python
Python jiaba库的使用详解
Nov 23 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利用cookie实现访问次数统计代码
2011/05/19 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
二级域名转向类
2006/11/09 Javascript
使用js在页面中绘制表格核心代码
2013/09/16 Javascript
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
js中settimeout方法加参数的使用实例
2014/02/27 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
简介AngularJS中$http服务的用法
2016/02/06 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
深入理解nodejs搭建静态服务器(实现命令行)
2019/02/05 NodeJs
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
vue使用微信JS-SDK实现分享功能
2019/08/23 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
2019/09/16 Javascript
Python 调用VC++的动态链接库(DLL)
2008/09/06 Python
用python写asp详细讲解
2013/12/16 Python
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
wxpython学习笔记(推荐查看)
2014/06/09 Python
Python开发常用的一些开源Package分享
2015/02/14 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
python设置环境变量的原因和方法
2019/06/24 Python
django model通过字典更新数据实例
2020/04/01 Python
美国二手奢侈品寄售网站:TheRealReal
2016/10/29 全球购物
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
表扬信格式
2014/01/12 职场文书
澳大利亚商务邀请函
2014/01/17 职场文书
上级检查欢迎词
2014/01/18 职场文书
优秀护士获奖感言
2014/02/20 职场文书
大学三年计划书范文
2014/04/30 职场文书
土木工程专业本科生求职信
2014/10/01 职场文书
关于开学的感想
2015/08/10 职场文书
励志语录:你若不勇敢,谁替你坚强
2019/11/08 职场文书
在HTML5 localStorage中存储对象的示例代码
2021/04/21 Javascript
安装配置mysql及Navicat prenium的详细流程
2021/06/10 MySQL
Python学习之异常中的finally使用详解
2022/03/16 Python
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python
生命的关键成分来自太空?陨石说是的
2022/04/29 数码科技