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多线程threading.Lock锁用法实例
Nov 01 Python
Python中获取对象信息的方法
Apr 27 Python
Django中实现点击图片链接强制直接下载的方法
May 14 Python
Python实现PS滤镜碎片特效功能示例
Jan 24 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
May 05 Python
python字典改变value值方法总结
Jun 21 Python
Pycharm安装并配置jupyter notebook的实现
May 18 Python
浅谈TensorFlow中读取图像数据的三种方式
Jun 30 Python
Python绘图之二维图与三维图详解
Aug 04 Python
python中的插入排序的简单用法
Jan 19 Python
python使用pywinauto驱动微信客户端实现公众号爬虫
May 19 Python
详解Python requests模块
Jun 21 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
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
收集的php编写大型网站问题集
2007/03/06 PHP
php图片加中文水印实现代码分享
2012/10/31 PHP
解析PHP实现多进程并行执行脚本
2013/06/18 PHP
PHP里8个鲜为人知的安全函数分析
2014/12/09 PHP
PHP Filter过滤器全面解析
2016/08/09 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
2010/03/04 Javascript
js实现的捐赠管理完整实例
2015/01/20 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
2016/10/15 Javascript
JS实现的图片预览插件与用法示例【不上传图片】
2016/11/25 Javascript
vue双向数据绑定知识点总结
2018/04/18 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
JavaScript算法学习之冒泡排序和选择排序
2019/11/02 Javascript
详解vue中v-bind:style效果的自定义指令
2020/01/21 Javascript
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
Vue事件处理原理及过程详解
2020/03/11 Javascript
原生JS实现微信通讯录
2020/06/18 Javascript
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
python正则表达式去掉数字中的逗号(python正则匹配逗号)
2013/12/25 Python
使用Python获取Linux系统的各种信息
2014/07/10 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
python与C、C++混编的四种方式(小结)
2019/07/15 Python
pycharm重命名文件的方法步骤
2019/07/29 Python
关于keras中keras.layers.merge的用法说明
2020/05/23 Python
总结30个CSS3选择器
2017/04/13 HTML / CSS
董事长职责范文
2013/11/08 职场文书
毕业学生推荐信
2013/12/01 职场文书
艺人经纪人岗位职责
2014/04/15 职场文书
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
银行开户授权委托书格式
2014/10/10 职场文书
考试作弊检讨书
2014/10/21 职场文书
在职证明范本
2015/06/15 职场文书
浅谈PHP7中的一些小技巧
2021/05/29 PHP
python调用ffmpeg命令行工具便捷操作视频示例实现过程
2021/11/01 Python