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 相关文章推荐
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
Dec 04 Python
Python使用functools模块中的partial函数生成偏函数
Jul 02 Python
Python爬取网页中的图片(搜狗图片)详解
Mar 23 Python
PyTorch上实现卷积神经网络CNN的方法
Apr 28 Python
Python之dict(或对象)与json之间的互相转化实例
Jun 05 Python
django rest framework 数据的查找、过滤、排序的示例
Jun 25 Python
pandas.dataframe按行索引表达式选取方法
Oct 30 Python
对django2.0 关联表的必填on_delete参数的含义解析
Aug 09 Python
python 多进程共享全局变量之Manager()详解
Aug 15 Python
TensorFlow设置日志级别的几种方式小结
Feb 04 Python
django实现模板中的字符串文字和自动转义
Mar 31 Python
Django中ORM找出内容不为空的数据实例
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实现读取超大文件的方法
2014/07/28 PHP
PHP Opcache安装和配置方法介绍
2015/05/28 PHP
php指定长度分割字符串str_split函数用法示例
2017/01/30 PHP
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
在页面中输出当前客户端时间javascript实例代码
2016/03/02 Javascript
JS实现弹出居中的模式窗口示例
2016/06/20 Javascript
Google 地图类型详解及示例代码
2016/08/06 Javascript
javascript实现一个网页加载进度loading
2017/01/04 Javascript
js仿网易表单及时验证功能
2017/03/07 Javascript
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
JavaScript面向对象的程序设计(犯迷糊的小羊)
2018/05/27 Javascript
Webpack的dll功能使用
2018/06/28 Javascript
nodejs基础之多进程实例详解
2018/12/27 NodeJs
Vue.js实现开发购物车功能的方法详解
2019/02/22 Javascript
webpack中如何加载静态文件的方法步骤
2019/05/18 Javascript
vue 地图可视化 maptalks 篇实例代码详解
2019/05/21 Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
2020/04/27 Javascript
在Vuex中Mutations修改状态操作
2020/07/24 Javascript
Python中selenium实现文件上传所有方法整理总结
2017/04/01 Python
Python 获取ftp服务器文件时间的方法
2019/07/02 Python
python super的使用方法及实例详解
2019/09/25 Python
下载官网python并安装的步骤详解
2019/10/12 Python
Python中six模块基础用法
2019/12/08 Python
Python中使用threading.Event协调线程的运行详解
2020/05/02 Python
matplotlib 画双轴子图无法显示x轴的解决方法
2020/07/27 Python
python向企业微信发送文字和图片消息的示例
2020/09/28 Python
Python常用断言函数实例汇总
2020/11/30 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
Avène雅漾美国官方网站:敏感肌肤护理专家
2016/10/24 全球购物
营业经理岗位职责
2013/11/10 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
经典导游欢迎词
2015/01/26 职场文书
实施意见格式范本
2015/06/05 职场文书
python 下载文件的几种方式分享
2021/04/07 Python