Python一行代码解决矩阵旋转的问题


Posted in Python onNovember 30, 2019

今天刷《剑指offer》的时候碰到这样一道题:

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

思路:可以模拟魔方逆时针旋转的方法,一直做取出第一行的操作,例如 :

1 2 3
4 5 6
7 8 9

利用pop输出并且删除第一行后,再进行一次逆时针旋转,就变成:

6 9
5 8
4 7

然后,继续重复上述操作即可。

最主要的在于实现矩阵的逆时针操作。关于矩阵的旋转有好几种,转置、顺时针、逆时针,下面直接上代码,用一行python代码实现这三种操作。

矩阵转置:

matrix = [[1,2,3], [4,5,6], [7,8,9]]
matrix = map(list, zip(*matrix))
print(matrix)
 
>>>[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

矩阵顺时针旋转:先把矩阵上下翻转,然后在转置一下

matrix = [[1,2,3], [4,5,6], [7,8,9]]
matrix[:] = map(list,zip(*matrix[::-1]))
print(matrix)
 
>>>[[7, 4, 1], [8, 5, 2], [9, 6, 3]]

矩阵逆时针旋转:先把矩阵转置一下,然后在上下翻转

matrix = [[1,2,3], [4,5,6], [7,8,9]]
matrix[:] = map(list,zip(*matrix))[::-1]
print(matrix)
 
>>>[[3, 6, 9], [2, 5, 8], [1, 4, 7]]

下面是完整的解题代码:

# -*- coding:utf-8 -*-
class Solution:
  # matrix类型为二维列表,需要返回列表
  def printMatrix(self, matrix):
    # write code here
    result = []
    while(matrix):
      result += matrix.pop(0)
      if not matrix or not matrix[0]:
        break
      # 将矩阵逆时针旋转
      matrix[:] = map(list, zip(*matrix))[::-1]
    return result

以上这篇Python一行代码解决矩阵旋转的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
记录Django开发心得
Jul 16 Python
Python中的高级函数map/reduce使用实例
Apr 13 Python
Ruby使用eventmachine为HTTP服务器添加文件下载功能
Apr 20 Python
Python正则简单实例分析
Mar 21 Python
Python实现多条件筛选目标数据功能【测试可用】
Jun 13 Python
Python面向对象思想与应用入门教程【类与对象】
Apr 12 Python
详解python中docx库的安装过程
Nov 08 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
Nov 21 Python
python3实现弹弹球小游戏
Nov 25 Python
基于pandas中expand的作用详解
Dec 17 Python
Python基于BeautifulSoup爬取京东商品信息
Jun 01 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
Sep 03 Python
Numpy之将矩阵拉成向量的实例
Nov 30 #Python
numpy np.newaxis 的实用分享
Nov 30 #Python
Python如何使用函数做字典的值
Nov 30 #Python
关于Numpy中的行向量和列向量详解
Nov 30 #Python
numpy:np.newaxis 实现将行向量转换成列向量
Nov 30 #Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
Nov 30 #Python
python 实现多维数组转向量
Nov 30 #Python
You might like
探讨方法的重写(覆载)详解
2013/06/08 PHP
Yii隐藏URL中index.php的方法
2016/07/12 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
2016/08/12 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
Opacity.js
2007/01/22 Javascript
基于jquery的3d效果实现代码
2011/03/23 Javascript
使用UglifyJS合并/压缩JavaScript的方法
2012/03/07 Javascript
由点击页面其它地方隐藏div所想到的jQuery的delegate
2013/08/29 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
2016/05/09 Javascript
web打印小结
2017/01/11 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
javascript 开发之网页兼容各种浏览器
2017/09/28 Javascript
vue之父子组件间通信实例讲解(props、$ref、$emit)
2018/05/22 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
js动态添加带圆圈序号列表的实例代码
2021/02/18 Javascript
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
python中类变量与成员变量的使用注意点总结
2017/04/29 Python
Django中使用MySQL5.5的教程
2019/12/18 Python
python两个_多个字典合并相加的实例代码
2019/12/26 Python
Pytorch maxpool的ceil_mode用法
2020/02/18 Python
Python 读取WAV音频文件 画频谱的实例
2020/03/14 Python
浅谈Python中os模块及shutil模块的常规操作
2020/04/03 Python
如何设置PyCharm中的Python代码模版(推荐)
2020/11/20 Python
pandas抽取行列数据的几种方法
2020/12/13 Python
html5唤醒APP小记
2019/03/27 HTML / CSS
苹果美国官方商城:Apple美国
2016/08/24 全球购物
俄罗斯品牌服装在线商店:VIPAVENUE
2020/08/10 全球购物
中专毕业个人的自荐信格式
2013/09/21 职场文书
优秀团员个人的自我评价
2013/10/02 职场文书
旅游网创业计划书
2014/01/31 职场文书
《庐山的云雾》教学反思
2014/04/22 职场文书
学校个人对照检查材料
2014/08/26 职场文书
工人先锋号事迹材料
2014/12/24 职场文书
幼儿园园长六一致辞
2015/07/31 职场文书
医院病假条范文
2015/08/17 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书