Python3实现的旋转矩阵图像算法示例


Posted in Python onApril 03, 2019

本文实例讲述了Python3实现的旋转矩阵图像算法。分享给大家供大家参考,具体如下:

问题:

给定一个 n × n 的二维矩阵表示一个图像。

将图像顺时针旋转 90 度。

方案一:先按X轴对称旋转, 再用zip()解压,最后用list重组。

# -*- coding:utf-8 -*-
#! python3
class Solution:
  def rotate(self, matrix):
    """
    :type matrix: List[List[int]]
    :rtype: void Do not return anything, modify matrix in-place instead.
    """
    matrix[:] = map(list, zip(*matrix[: : -1]))
    return matrix
if __name__ == '__main__':
  # 测试代码
  matrix = [
    [1,2,3,4],
    [5,6,7,8],
    [9,10,11,12],
    [13,14,15,16]
  ]
  solution = Solution()
  result = solution.rotate(matrix)
  print(result)

运行结果:

[[13, 9, 5, 1], [14, 10, 6, 2], [15, 11, 7, 3], [16, 12, 8, 4]]

方案二:找到规律,用原矩阵数据 赋值

# -*- coding:utf-8 -*-
#! python3
class Solution:
  def rotate(self, matrix):
    """
    :type matrix: List[List[int]]
    :rtype: void Do not return anything, modify matrix in-place instead.
    """
    m = matrix.copy()
    n = len(matrix)
    for i in range(n):
      matrix[i] = [m[j][i] for j in range(n - 1, -1, -1)]
    return
if __name__ == '__main__':
  # 测试代码
  matrix = [
    [1,2,3,4],
    [5,6,7,8],
    [9,10,11,12],
    [13,14,15,16]
  ]
  solution = Solution()
  result = solution.rotate(matrix)
  print(result)

运行结果:

[[13, 9, 5, 1], [14, 10, 6, 2], [15, 11, 7, 3], [16, 12, 8, 4]]

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python os模块介绍
Nov 30 Python
Python中http请求方法库汇总
Jan 06 Python
简述:我为什么选择Python而不是Matlab和R语言
Nov 14 Python
Python变量赋值的秘密分享
Apr 03 Python
python3学生名片管理v2.0版
Nov 29 Python
python多任务及返回值的处理方法
Jan 22 Python
python面向对象法实现图书管理系统
Apr 19 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
Jan 10 Python
python isinstance函数用法详解
Feb 13 Python
python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例
Mar 06 Python
python如何进行矩阵运算
Jun 05 Python
基于flask实现五子棋小游戏
May 25 Python
python3对拉勾数据进行可视化分析的方法详解
Apr 03 #Python
python2.7使用plotly绘制本地散点图和折线图
Apr 02 #Python
Python时间序列处理之ARIMA模型的使用讲解
Apr 02 #Python
Python代码实现删除一个list里面重复元素的方法
Apr 02 #Python
从0开始的Python学习014面向对象编程(推荐)
Apr 02 #Python
Python参数解析模块sys、getopt、argparse使用与对比分析
Apr 02 #Python
python flask安装和命令详解
Apr 02 #Python
You might like
PHP 进程锁定问题分析研究
2009/11/24 PHP
基于php上传图片重命名的6种解决方法的详细介绍
2013/04/28 PHP
PHP Session机制简介及用法
2014/08/19 PHP
分享php多功能图片处理类
2016/05/15 PHP
PHP调用其他文件中的类
2018/04/02 PHP
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
js格式化时间和js格式化时间戳示例
2014/02/10 Javascript
javascript面向对象特性代码实例
2014/06/12 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
bootstrap警告框示例代码分享
2017/05/17 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
webstorm中配置Eslint的两种方式及差异比较详解
2018/10/19 Javascript
vue+node实现图片上传及预览的示例方法
2018/11/22 Javascript
vue的.vue文件是怎么run起来的(vue-loader)
2018/12/10 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
微信小程序前端自定义分享的实现方法
2019/06/13 Javascript
详解Vue 换肤方案验证
2019/08/28 Javascript
[40:31]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python数据类型详解(一)字符串
2016/05/08 Python
浅谈Python数据类型之间的转换
2016/06/08 Python
Python SqlAlchemy动态添加数据表字段实例解析
2018/02/07 Python
基于DataFrame筛选数据与loc的用法详解
2018/05/18 Python
Python 给屏幕打印信息加上颜色的实现方法
2019/04/24 Python
python Tcp协议发送和接收信息的例子
2019/07/22 Python
python help函数实例用法
2020/12/06 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
The North Face北面荷兰官网:美国著名户外品牌
2019/10/16 全球购物
团支书的期末学习总结自我评价
2013/11/01 职场文书
档案管理员岗位职责
2013/12/01 职场文书
应用心理学个人求职信范文
2013/12/11 职场文书
会计求职自荐信
2015/03/26 职场文书
Python打包exe时各种异常处理方案总结
2021/05/18 Python
Python实现老照片修复之上色小技巧
2021/10/16 Python