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 (2)
Oct 31 Python
python抓取网页时字符集转换问题处理方案分享
Jun 19 Python
使用python实现链表操作
Jan 26 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
Oct 11 Python
深入解析Python小白学习【操作列表】
Mar 23 Python
python opencv将图片转为灰度图的方法示例
Jul 31 Python
python智联招聘爬虫并导入到excel代码实例
Sep 09 Python
Python关键字及可变参数*args,**kw原理解析
Apr 04 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
Jul 14 Python
Django自定义YamlField实现过程解析
Nov 11 Python
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
Oct 16 Python
Python中的嵌套循环详情
Mar 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使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
php使用curl和正则表达式抓取网页数据示例
2014/04/13 PHP
php强制文件下载而非在浏览器打开的自定义函数分享
2014/05/08 PHP
php中mail函数发送邮件失败的解决方法
2014/12/24 PHP
PHP实现连接设备、通讯和发送命令的方法
2015/10/13 PHP
php从数据库中读取特定的行(实例)
2017/06/02 PHP
PHP实现的日历功能示例
2018/09/01 PHP
javascript 拖放效果实现代码
2010/01/22 Javascript
jquery中获取元素的几种方式小结
2011/07/05 Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
2013/06/24 Javascript
完美解决IE低版本不支持call与apply的问题
2013/12/05 Javascript
提取jquery的ready()方法单独使用示例
2014/03/25 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
模拟javascript中的sort排序(简单实例)
2016/08/17 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解
2017/09/25 Javascript
vscode调试node.js的实现方法
2020/03/22 Javascript
公众号SVG动画交互实战代码
2020/05/31 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
对pandas通过索引提取dataframe的行方法详解
2019/02/01 Python
python实现弹窗祝福效果
2019/04/07 Python
Python 类的私有属性和私有方法实例分析
2019/09/29 Python
简单了解python数组的基本操作
2019/11/26 Python
python中re模块知识点总结
2021/01/17 Python
css3 position fixed固定居中问题解决方案
2014/08/19 HTML / CSS
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
大学生专科学习生活的自我评价
2013/12/07 职场文书
土建资料员岗位职责
2014/01/04 职场文书
环保建议书500字
2014/05/14 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
初中历史教学反思
2016/02/19 职场文书
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL
Golang日志包的使用
2022/04/20 Golang
win10识别不了U盘怎么办 win10系统读取U盘失败的解决办法
2022/08/05 数码科技