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中的MySQLdb模块添加超时功能的教程
May 05 Python
Python数据类型详解(四)字典:dict
May 12 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
Nov 29 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
Oct 11 Python
python实现本地图片转存并重命名的示例代码
Oct 27 Python
Python选择网卡发包及接收数据包
Apr 04 Python
Python3.5字符串常用操作实例详解
May 01 Python
Django应用程序入口WSGIHandler源码解析
Aug 05 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
Feb 14 Python
彻底搞懂 python 中文乱码问题(深入分析)
Feb 28 Python
使用Keras构造简单的CNN网络实例
Jun 29 Python
python 星号(*)的多种用途
Sep 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
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
更正确的asp冒泡排序
2007/05/24 Javascript
Javascript倒计时代码
2010/08/12 Javascript
百度地图api应用标注地理位置信息(js版)
2013/02/01 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
jQuery EasyUI基础教程之EasyUI常用组件(推荐)
2016/07/15 Javascript
基于JavaScript实现全选、不选和反选效果
2017/02/15 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
vue轮播图插件vue-awesome-swiper
2017/11/27 Javascript
原生JS实现动态加载js文件并在加载成功后执行回调函数的方法
2020/12/30 Javascript
Vue数据双向绑定原理实例解析
2020/05/15 Javascript
[47:21]Liquid vs TNC Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
[45:34]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.18
2020/12/19 DOTA
[01:06:19]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第二场 1月8日
2021/03/11 DOTA
python操作redis的方法
2015/07/07 Python
在win和Linux系统中python命令行运行的不同
2016/07/03 Python
python3中dict(字典)的使用方法示例
2017/03/22 Python
python编写暴力破解zip文档程序的实例讲解
2018/04/24 Python
Python 使用类写装饰器的小技巧
2018/09/30 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
Python操作Sonqube API获取检测结果并打印过程解析
2019/11/27 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
Python常用外部指令执行代码实例
2020/11/05 Python
H5仿微信界面教程(一)
2017/07/05 HTML / CSS
浅析移动设备HTML5页面布局
2015/12/01 HTML / CSS
探讨HTML5移动开发的几大特性(必看)
2015/12/30 HTML / CSS
会计工作心得体会
2014/01/13 职场文书
幼教简历自我评价
2014/01/28 职场文书
开业主持词
2014/03/21 职场文书
奥巴马连任演讲稿
2014/05/15 职场文书
新闻人物通讯稿
2014/10/09 职场文书
公司授权委托书
2014/10/17 职场文书
单位综合评价意见
2015/06/05 职场文书
用JS写一个发布订阅模式
2021/11/07 Javascript
mysql中DCL常用的用户和权限控制
2022/03/31 MySQL
Python实现简单得递归下降Parser
2022/05/02 Python