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 re正则表达式模块(Regular Expression)
Jul 16 Python
python使用socket连接远程服务器的方法
Apr 29 Python
Python中关于使用模块的基础知识
May 24 Python
举例讲解Django中数据模型访问外键值的方法
Jul 21 Python
解决Pycharm中import时无法识别自己写的程序方法
May 18 Python
Python设计模式之工厂方法模式实例详解
Jan 18 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
Mar 05 Python
Python获取时间戳代码实例
Sep 24 Python
pandas中遍历dataframe的每一个元素的实现
Oct 23 Python
Python PyPDF2模块安装使用解析
Jan 19 Python
python 调整图片亮度的示例
Dec 03 Python
使用python操作lmdb对数据读取的实例
Dec 11 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导出oracle库的php代码
2009/04/20 PHP
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
2016/01/08 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
javascript 跨浏览器开发经验总结(五) js 事件
2010/05/19 Javascript
jquery autocomplete自动完成插件的的使用方法
2010/08/07 Javascript
JavaScript游戏之优化篇
2010/11/08 Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
JS的数组迭代方法
2015/02/05 Javascript
javascript页面倒计时实例
2015/07/25 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
jquery+css实现侧边导航栏效果
2017/06/12 jQuery
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
express如何解决ajax跨域访问session失效问题详解
2019/06/20 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
JS+Canvas实现五子棋游戏
2020/08/26 Javascript
[01:00:25]NB vs Secret 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
Python 变量类型及命名规则介绍
2013/06/08 Python
Python字符串替换实例分析
2015/05/11 Python
Python编程中的异常处理教程
2015/08/21 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
python图像和办公文档处理总结
2019/05/28 Python
纯python进行矩阵的相乘运算的方法示例
2019/07/17 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
Agoda西班牙:全球特价酒店预订
2017/06/03 全球购物
微软中国官方旗舰店:销售Surface、Xbox One、笔记本电脑、Office
2018/07/23 全球购物
财务会计人员求职的自我评价
2014/01/13 职场文书
党员入党表决心的话
2014/03/11 职场文书
三八节主持词
2014/03/17 职场文书
英语专业自荐书
2014/06/13 职场文书
护士2014年终工作总结
2014/11/11 职场文书
环境建议书
2015/02/04 职场文书
销售工作决心书
2015/02/04 职场文书
诺贝尔奖获得者名言100句:句句启人心智,值永久收藏
2019/08/09 职场文书
Java 写一个简单的图书管理系统
2022/04/26 Java/Android