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" 这类问题疯狂吸引,主要是作为一个能躺着绝不坐着的懒人,代码能少写坚决少写,而且这类问 ...
最新文章
- 应用 | 红黄蓝的虐童惨案,其实可以用机器学习等技术来避免
- LTE-TDD与LTE-FDD技术比较
- [JVM-1]Java运行时数据区域
- V8 —— 你需要知道的垃圾回收机制
- 解读dbcp自动重连那些事---转载
- 清理vs工程文件(python2.7)
- 【POJ3264】Balanced Lineup,线段树入门
- bboss 会话管理session操作使用示例
- 在Java中从字符串中删除空格
- BAT中取得一个命令的执行结果
- 【MFC开发(7)】编辑框控件Edit Control
- WIFI 认证加密模式介绍 理解无线安全
- 【鼠标右键点击桌面图标时,出现资源管理器未响应】
- 1. 计算机网络概述
- C语言的语句与程序的基本结构
- av 1. Computer Abstractions and Technolog
- 第二宇宙速度的小学生难度推导
- android蓝牙开发 蓝牙设备的查找和连接
- 计算机底层:高速缓冲存储器
- Docker容器——容器之间的互联
热门文章
- java设计九宫格拼图软件哪个好用_九宫格拼图软件下载_抖音很火的九宫格拼图软件app下载_易玩网...
- SDNU 1040.导弹拦截
- 如何学C语言,新手必看!
- 1985年全国计算机编程大赛,关于举办2021年“中国高校计算机大赛-团体程序设计天梯赛”校内选拔赛的通知...
- 488 祖玛游戏 python
- 2017AP计算机科学5分线,2017各国际学校AP分数大比拼,看看你是啥水平
- 最新StarrySky星空简约记录型模板源码+Typecho内核
- 海康综合安防管理平台V1.5.100 用户添加和监控点添加。
- redis-享学课堂
- Coursera | Grammer and Punctuation(UCI) | Quiz