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*用法(一行代码实现矩阵的旋转)相关推荐

  1. python有趣代码-python有趣的一行代码

    python有趣的一行代码 程序员式表白 print(' '.join([''.join([('AndyLove'[(x-y)%8]if((x*0.05)**2+(y*0.1)**2-1)**3-(x ...

  2. python有趣的代码-python有趣的一行代码

    python有趣的一行代码 程序员式表白 print(' '.join([''.join([('AndyLove'[(x-y)%8]if((x*0.05)**2+(y*0.1)**2-1)**3-(x ...

  3. python 新闻_Python一行代码竟能干这种事,同学都欢呼:要向女神表白!

    @数据分析师攻略 公众号 关注.学习更多数据分析的知识与资讯 ------ Python的语法十分简洁,简洁到只需要一行代码,即可输出意想不到的效果.一行代码到底有什么独特的魅力,下面一起来感受一下吧 ...

  4. python提升运行速度-一行代码让你的python运行速度提高100倍!Python真强!

    原标题:一行代码让你的python运行速度提高100倍!Python真强! Python用的好,猪也能飞起来. 今天,带大家学习如何让Python飞起来的方法,干货满满哦! python一直被病垢运行 ...

  5. 【Python】Autoviz: 一行代码搞定数据集探索并可视化

    数据集各个特征有什么变化趋势.各个特征之间有何关系,我们可以借助Matplotlib.Seaborn等诸多工具来可视化展示,那么有没有一种工具能一次展示所有的关系了? 本文要介绍的Python工具Au ...

  6. Python技巧-只用一行代码轻松实现图片文本识别

    生活中我们可能会遇到需要从图片上获取文本内容的情况,人工去核对的话非常头疼.今天小千就来教大家使用Python一行代码就能实现文本识别,下面来看看吧. Python图片文本识别 这里我们需要用到两个库 ...

  7. 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 ...

  8. python童年_一行代码玩童年小游戏

    首先,我们要打开cmd,以此下载freegames这个包.有一些新手小白可能会问:cmd是什么-- 打开cmd 首先按住笔记本电脑(或者台式机)的win键(就是四个小方块组成一个梯形的键),接着按下r ...

  9. Python 面试:“一行代码实现 xx”类题目(带答案)

    大家好,我是 Rocky0429,一个正在准备面试的蒟蒻- 最近,我被 "一行代码实现 xx" 这类问题疯狂吸引,主要是作为一个能躺着绝不坐着的懒人,代码能少写坚决少写,而且这类问 ...

最新文章

  1. faig在matlab意思,MATLAB在电力电子和运动控制系统实验教学中的应用
  2. C# 代理做为函数参数的时候
  3. java 面试题 简书_java面试题
  4. 基于vue2+vuex+vue-router+sass+webpack的网易云音乐
  5. iOS开发基础-九宫格坐标(4)
  6. 李宏毅机器学习(六)自监督学习(一)
  7. 手机局域网html,手机遥控电脑开机神器!局域网唤醒App
  8. 农夫山泉终于“玩砸了”
  9. Windows 8及以上系统安装好SQL Server 2008之后找不到SQL Server配置管理器的问题
  10. Java 多线程--- 创建线程、Thread类、synchronized
  11. Atitit ACID解决方案2PC(两阶段提交)  跨越多个数据库实例的ACID保证
  12. linux重新初始化mysql 并修改大小写铭感_在Linux(Centos 7)环境下安装Mysql的完整过程...
  13. 【国际篇】有关学术的一些小知识(EI、SCI、影响因子、中科院分区、JCR分区等)
  14. 易语言 文件捆绑机的原理【转载】
  15. python上传百度云_python通过百度云api的方式上传或下载文件
  16. Linux reboot全过程
  17. mysql 5.6 64 位安装 缺少libai.so_CentOS6.7安装部署LNMP(nginx1.8.0+php5.6.10+mysql5.6.12) 法外狂徒...
  18. origin出现demo水印解决方案
  19. 【软件测试】8年资深测试解析,软件测试行业情报,风风雨雨......
  20. 使用Pandas的read_html方法读取网页Table表格数据

热门文章

  1. 树莓派3B+采用花生棒进行内网穿透,从拆箱到实现SSH远程控制与sftp简单远程文件上传下载
  2. mqtt broker(代理/服务器)mosquitto的安装 配置 使用
  3. 全球首例!韩国或将禁止苹果和谷歌向开发者收佣
  4. 使用JQuery Ajax发送FormData数据
  5. linux maskrom模式,微雪电子RK3308主板CC启动模式介绍
  6. 如何捕获access violation异常
  7. revit服务器系统,Revit 2020 产品系统要求
  8. 淘宝退货退款测试用例
  9. 赛灵思 Xilinx UG908 - Vivado Design Suite 用户指南:编程和调试(中文版) (v2020.2)
  10. 经济学中的李嘉图模型