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中实现字符串类型与字典类型相互转换的方法
Aug 18 Python
python类继承用法实例分析
May 27 Python
Python使用email模块对邮件进行编码和解码的实例教程
Jul 01 Python
一步步教你用Python实现2048小游戏
Jan 19 Python
Python实现的爬虫功能代码
Jun 24 Python
详解Python 序列化Serialize 和 反序列化Deserialize
Aug 20 Python
ubuntu中配置pyqt4环境教程
Dec 27 Python
python excel使用xlutils类库实现追加写功能的方法
May 02 Python
django项目登录中使用图片验证码的实现方法
Aug 15 Python
树莓派3 搭建 django 服务器的实例
Aug 29 Python
Python ATM功能实现代码实例
Mar 19 Python
Python Excel vlookup函数实现过程解析
Jun 22 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
防止本地用户用fsockopen DDOS攻击对策
2011/11/02 PHP
php用户注册页面利用js进行表单验证具体实例
2013/10/17 PHP
php实现向javascript传递数组的方法
2015/07/27 PHP
php框架CodeIgniter使用redis的方法分析
2018/04/13 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
javascript 清除输入框中的数据
2009/04/13 Javascript
JS 的应用开发初探(mootools)
2009/12/19 Javascript
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
简单谈谈javascript中的变量、作用域和内存问题
2015/08/30 Javascript
jQuery采用连缀写法实现的折叠菜单效果
2015/09/18 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
2015/11/21 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
2016/09/08 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
vue使用recorder.js实现录音功能
2019/11/22 Javascript
记一次react前端项目打包优化的方法
2020/03/30 Javascript
vue实例的选项总结
2020/06/09 Javascript
基于javascript处理nginx请求过程详解
2020/07/07 Javascript
Python 开发Activex组件方法
2009/11/08 Python
基于python内置函数与匿名函数详解
2018/01/09 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
2019/11/15 Python
python连接PostgreSQL过程解析
2020/02/09 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
2020/07/14 Python
CSS3中Color的一些特性介绍
2012/05/27 HTML / CSS
应届大专毕业生个人自荐信
2013/09/22 职场文书
市场营销职业生涯规划书范文
2014/01/12 职场文书
幼儿园元旦亲子活动方案
2014/02/17 职场文书
励志演讲稿大全
2014/08/21 职场文书
维护民族团结演讲稿
2014/08/27 职场文书
领导干部作风建设自查报告
2014/10/23 职场文书
2015年班级工作总结范文
2015/04/03 职场文书
党小组推荐意见
2015/06/02 职场文书
施工现场安全管理制度
2015/08/05 职场文书
nginx配置之并发频次限制
2022/04/18 Servers