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中的wxPython实现最基本的浏览器功能
Apr 14 Python
Python实现根据IP地址和子网掩码算出网段的方法
Jul 30 Python
简单了解Django模板的使用
Dec 20 Python
Python语言描述连续子数组的最大和
Jan 04 Python
Python简单读写Xls格式文档的方法示例
Aug 17 Python
python 判断三个数字中的最大值实例代码
Jul 24 Python
利用python实现平稳时间序列的建模方式
Jun 03 Python
python ETL工具 pyetl
Jun 07 Python
python 中的9个实用技巧,助你提高开发效率
Aug 30 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
Sep 20 Python
python中封包建立过程实例
Feb 18 Python
Python快速优雅的批量修改Word文档样式
May 20 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中的时间处理
2006/10/09 PHP
php实现从ftp服务器上下载文件树到本地电脑的程序
2009/02/10 PHP
体育彩票排列三组选三算法分享
2014/03/07 PHP
PHP简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
PHP序列化/对象注入漏洞分析
2016/04/18 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
将json对象转换为字符串的方法
2014/02/20 Javascript
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
JS文件/图片从电脑里面拖拽到浏览器上传文件/图片
2017/03/08 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
vue自定义一个v-model的实现代码
2018/06/21 Javascript
JS实现方形抽奖效果
2018/08/27 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
Java Varargs 可变参数用法详解
2020/01/28 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
Mac 上切换Python多版本
2017/06/17 Python
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
Python 字符串与二进制串的相互转换示例
2018/07/23 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
2018/09/04 Python
TensorFlow实现iris数据集线性回归
2018/09/07 Python
Pandas库之DataFrame使用的学习笔记
2019/06/21 Python
python判断一个对象是否可迭代的例子
2019/07/22 Python
python requests证书问题解决
2019/09/05 Python
python中的subprocess.Popen()使用详解
2019/12/25 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
2020/01/15 Python
Python中的wordcloud库安装问题及解决方法
2020/05/27 Python
html5 datalist 选中option选项后的触发事件
2020/03/05 HTML / CSS
香港草莓网土耳其网站:Strawberrynet TR
2017/03/02 全球购物
如何获得EntityManager
2014/02/09 面试题
2014年五一劳动节社区活动总结
2014/04/14 职场文书
绿色出行口号
2014/06/18 职场文书
作文评语集锦
2014/12/25 职场文书
高中体育课教学反思
2016/02/16 职场文书