Python zip*用法(一行代码实现矩阵的旋转)
1、ZIP函数
- ZIP函数是Python中的一个内置函数,在Python 2.X的版本中返回的是一个列表,Python 3.X版本中返回的是一个zip迭代器对象。
ZIP函数的具体用法
a = [1,2,3]
b = [4,5,6]
for x,y in zip(a,b):print(x,y)
预计的返回结果
1 4
2 5
3 6
很显然,ZIP函数是将两个容器内的数据进行组合。
list(zip([1,2,3],[4,5,6]))
返回结果为
[(1, 4), (2, 5), (3, 6)]
zip中的两个对象,可以都是列表,也可以是一个列表一个集合,还可以是一个列表一个字符串
list(zip([1,2,3,4],'def'))
返回结果为
[(1, 'd'), (2, 'e'), (3, 'f')]
可以看到当两个容器的长度不一样的时候,zip函数还可以进行自动剪裁。
2、ZIP*实现矩阵旋转
- 当矩阵是二维的时候,zip函数也有自己的用途,那就是实现选择二维矩阵的某一列或者直接对其旋转
- 旋转二维矩阵,简单的方法是将二维列表使用 numpy 转换成array对象,然后使用 numpy 自带的旋转函数。
import numpy as np
res = []
matrix = [[1,2,3],[4,5,6],[7,8,9]]
matrix=np.array(matrix)
matrix=np.rot90(matrix,1)
print(matrix)
返回结果为
[[3,6,9],[2,5,8],[1,4,7]]
可以看到矩阵进行了逆时针的旋转
更简单的,可以直接使用ZIP*一行搞定
matrix = [[1,2,3],[4,5,6],[7,8,9]]
matrix= list(zip(*matrix))[::-1]
print(matrix)
返回结果与使用库函数是一样的
注意:这里的*是必不可少的
3、具体应用
- Leetcode上旋转图像和旋转矩阵的题基本上都可以用这个方法
- 比如Leetcode54 螺旋矩阵
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
示例 2:
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/spiral-matrix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解代码
res=[]
while len(matrix)>0:res.extend(matrix.pop(0)) # 选取第一行matrix=list(zip(*matrix))[::-1] # 逆时针旋转90度
return res
Python zip*用法(一行代码实现矩阵的旋转)相关推荐
- python有趣代码-python有趣的一行代码
python有趣的一行代码 程序员式表白 print(' '.join([''.join([('AndyLove'[(x-y)%8]if((x*0.05)**2+(y*0.1)**2-1)**3-(x ...
- python有趣的代码-python有趣的一行代码
python有趣的一行代码 程序员式表白 print(' '.join([''.join([('AndyLove'[(x-y)%8]if((x*0.05)**2+(y*0.1)**2-1)**3-(x ...
- python 新闻_Python一行代码竟能干这种事,同学都欢呼:要向女神表白!
@数据分析师攻略 公众号 关注.学习更多数据分析的知识与资讯 ------ Python的语法十分简洁,简洁到只需要一行代码,即可输出意想不到的效果.一行代码到底有什么独特的魅力,下面一起来感受一下吧 ...
- python提升运行速度-一行代码让你的python运行速度提高100倍!Python真强!
原标题:一行代码让你的python运行速度提高100倍!Python真强! Python用的好,猪也能飞起来. 今天,带大家学习如何让Python飞起来的方法,干货满满哦! python一直被病垢运行 ...
- 【Python】Autoviz: 一行代码搞定数据集探索并可视化
数据集各个特征有什么变化趋势.各个特征之间有何关系,我们可以借助Matplotlib.Seaborn等诸多工具来可视化展示,那么有没有一种工具能一次展示所有的关系了? 本文要介绍的Python工具Au ...
- Python技巧-只用一行代码轻松实现图片文本识别
生活中我们可能会遇到需要从图片上获取文本内容的情况,人工去核对的话非常头疼.今天小千就来教大家使用Python一行代码就能实现文本识别,下面来看看吧. Python图片文本识别 这里我们需要用到两个库 ...
- Python 3,一行代码处理各种时间转换,从此跟datetime,time模块说拜拜 ~ ~ 不收藏算我输!!!
pendulum模块详细介绍 1.引言 2.pendulum模块介绍 2.2 介绍 2.2 安装 2.3 实例化时区 2.3.1 默认时区展示 2.3.2 时区本地化 2.3.3 时区切换 2.3.4 ...
- python童年_一行代码玩童年小游戏
首先,我们要打开cmd,以此下载freegames这个包.有一些新手小白可能会问:cmd是什么-- 打开cmd 首先按住笔记本电脑(或者台式机)的win键(就是四个小方块组成一个梯形的键),接着按下r ...
- Python 面试:“一行代码实现 xx”类题目(带答案)
大家好,我是 Rocky0429,一个正在准备面试的蒟蒻- 最近,我被 "一行代码实现 xx" 这类问题疯狂吸引,主要是作为一个能躺着绝不坐着的懒人,代码能少写坚决少写,而且这类问 ...
最新文章
- faig在matlab意思,MATLAB在电力电子和运动控制系统实验教学中的应用
- C# 代理做为函数参数的时候
- java 面试题 简书_java面试题
- 基于vue2+vuex+vue-router+sass+webpack的网易云音乐
- iOS开发基础-九宫格坐标(4)
- 李宏毅机器学习(六)自监督学习(一)
- 手机局域网html,手机遥控电脑开机神器!局域网唤醒App
- 农夫山泉终于“玩砸了”
- Windows 8及以上系统安装好SQL Server 2008之后找不到SQL Server配置管理器的问题
- Java 多线程--- 创建线程、Thread类、synchronized
- Atitit ACID解决方案2PC(两阶段提交) 跨越多个数据库实例的ACID保证
- linux重新初始化mysql 并修改大小写铭感_在Linux(Centos 7)环境下安装Mysql的完整过程...
- 【国际篇】有关学术的一些小知识(EI、SCI、影响因子、中科院分区、JCR分区等)
- 易语言 文件捆绑机的原理【转载】
- python上传百度云_python通过百度云api的方式上传或下载文件
- Linux reboot全过程
- mysql 5.6 64 位安装 缺少libai.so_CentOS6.7安装部署LNMP(nginx1.8.0+php5.6.10+mysql5.6.12) 法外狂徒...
- origin出现demo水印解决方案
- 【软件测试】8年资深测试解析,软件测试行业情报,风风雨雨......
- 使用Pandas的read_html方法读取网页Table表格数据
热门文章
- 树莓派3B+采用花生棒进行内网穿透,从拆箱到实现SSH远程控制与sftp简单远程文件上传下载
- mqtt broker(代理/服务器)mosquitto的安装 配置 使用
- 全球首例!韩国或将禁止苹果和谷歌向开发者收佣
- 使用JQuery Ajax发送FormData数据
- linux maskrom模式,微雪电子RK3308主板CC启动模式介绍
- 如何捕获access violation异常
- revit服务器系统,Revit 2020 产品系统要求
- 淘宝退货退款测试用例
- 赛灵思 Xilinx UG908 - Vivado Design Suite 用户指南:编程和调试(中文版) (v2020.2)
- 经济学中的李嘉图模型