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使用新浪微博api上传图片到微博示例
Jan 10 Python
Python实现把回车符\r\n转换成\n
Apr 23 Python
利用python解决mysql视图导入导出依赖的问题
Dec 17 Python
python 匹配url中是否存在IP地址的方法
Jun 04 Python
Python实现的微信红包提醒功能示例
Aug 22 Python
学python安装的软件总结
Oct 12 Python
详解python中docx库的安装过程
Nov 08 Python
Python如何读取文件中图片格式
Jan 13 Python
Python3 字典dictionary入门基础附实例
Feb 10 Python
keras 权重保存和权重载入方式
May 21 Python
python munch库的使用解析
May 25 Python
python中出现invalid syntax报错的几种原因分析
Feb 12 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 join函数应用
2011/05/04 PHP
php发送与接收流文件的方法
2015/02/11 PHP
thinkPHP查询方式小结
2016/01/09 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
JavaScript入门教程(2) JS基础知识
2009/01/31 Javascript
jquery中的$(document).ready()与window.onload的区别
2009/11/18 Javascript
iframe 父窗口和子窗口相互的调用方法集锦
2010/12/15 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
javascript单引号和双引号的区别和处理
2014/05/14 Javascript
javascript中this的四种用法
2015/05/11 Javascript
JSON与XML优缺点对比分析
2015/07/17 Javascript
js编写当天简单日历效果【实现代码】
2016/05/03 Javascript
基于node.js依赖express解析post请求四种数据格式
2017/02/13 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
解决vue点击控制单个样式的问题
2018/09/05 Javascript
JS使用iView的Dropdown实现一个右键菜单
2019/05/06 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
微信小程序sessionid不一致问题解决
2019/08/30 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
2020/02/07 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
JS中的继承操作实例总结
2020/06/06 Javascript
python解决字典中的值是列表问题的方法
2013/03/04 Python
Python中static相关知识小结
2018/01/02 Python
python装饰器练习题及答案
2019/11/01 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
2020/06/24 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
Html5让容器充满屏幕高度或自适应剩余高度的布局实现
2020/05/14 HTML / CSS
华润集团网上药店:健一网
2016/09/19 全球购物
工作表现证明
2015/06/15 职场文书
生日赠语
2015/06/23 职场文书
早上好问候语大全
2015/11/10 职场文书
学校趣味运动会开幕词
2016/03/04 职场文书
Redis源码阅读:Redis字符串SDS详解
2021/07/15 Redis
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS
使用Python开发贪吃蛇游戏 SnakeGame
2022/04/30 Python
在SQL Server中使用 Try Catch 处理异常的示例详解
2022/07/15 SQL Server