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)变量类型简介
Jun 16 Python
用Python生成器实现微线程编程的教程
Apr 13 Python
自动化Nginx服务器的反向代理的配置方法
Jun 28 Python
python2.7实现FTP文件下载功能
Apr 15 Python
带你认识Django
Jan 15 Python
Python适配器模式代码实现解析
Aug 02 Python
Python处理session的方法整理
Aug 29 Python
Python使用matplotlib绘制三维参数曲线操作示例
Sep 10 Python
Tensorflow加载Vgg预训练模型操作
May 26 Python
Python生成器next方法和send方法区别详解
May 30 Python
Python爬虫headers处理及网络超时问题解决方案
Jun 19 Python
python scrapy简单模拟登录的代码分析
Jul 21 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实现图片添加水印功能
2014/02/13 PHP
Using the TextRange Object
2006/10/14 Javascript
jquery获得页面元素的坐标值实现思路及代码
2013/04/15 Javascript
JavaScript运行时库属性一览表
2014/03/14 Javascript
JavaScript实现的石头剪刀布游戏源码分享
2014/08/22 Javascript
jQuery中:enabled选择器用法实例
2015/01/04 Javascript
js面向对象之公有、私有、静态属性和方法详解
2015/04/17 Javascript
jfinal与bootstrap的登录跳转实战演习
2015/09/22 Javascript
javascript数据结构之二叉搜索树实现方法
2015/11/25 Javascript
js自定义回调函数
2015/12/13 Javascript
js正则表达式replace替换变量方法
2016/05/21 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
javascript的几种写法总结
2016/09/30 Javascript
Angular的自定义指令以及实例
2016/12/26 Javascript
JQuery判断正整数整理小结
2017/08/21 jQuery
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
2018/07/25 Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
2019/07/29 Javascript
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
[05:09]DOTA2-DPC中国联赛2月22日Recap集锦
2021/03/11 DOTA
Python中的__SLOTS__属性使用示例
2015/02/18 Python
利用Python批量生成任意尺寸的图片
2016/08/29 Python
关于反爬虫的一些简单总结
2017/12/13 Python
python 限制函数执行时间,自己实现timeout的实例
2019/01/12 Python
使用Python实现毫秒级抢单功能
2019/06/06 Python
python django 原生sql 获取数据的例子
2019/08/14 Python
python模拟实现分发扑克牌
2020/04/22 Python
带你学习Python如何实现回归树模型
2020/07/16 Python
is_file和file_exists效率比较
2021/03/14 PHP
老公给老婆的道歉信
2014/01/10 职场文书
关于逃课的检讨书
2014/01/23 职场文书
2014机关干部学习“焦裕禄精神”思想汇报
2014/09/19 职场文书
2015年银行大堂经理工作总结
2015/04/24 职场文书
pytorch finetuning 自己的图片进行训练操作
2021/06/05 Python
MySQL数据库10秒内插入百万条数据的实现
2021/11/01 MySQL
python数据处理之Pandas类型转换
2022/04/28 Python