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. 应用 | 红黄蓝的虐童惨案,其实可以用机器学习等技术来避免
  2. LTE-TDD与LTE-FDD技术比较
  3. [JVM-1]Java运行时数据区域
  4. V8 —— 你需要知道的垃圾回收机制
  5. 解读dbcp自动重连那些事---转载
  6. 清理vs工程文件(python2.7)
  7. 【POJ3264】Balanced Lineup,线段树入门
  8. bboss 会话管理session操作使用示例
  9. 在Java中从字符串中删除空格
  10. BAT中取得一个命令的执行结果
  11. 【MFC开发(7)】编辑框控件Edit Control
  12. WIFI 认证加密模式介绍 理解无线安全
  13. 【鼠标右键点击桌面图标时,出现资源管理器未响应】
  14. 1. 计算机网络概述
  15. C语言的语句与程序的基本结构
  16. av 1. Computer Abstractions and Technolog
  17. 第二宇宙速度的小学生难度推导
  18. android蓝牙开发 蓝牙设备的查找和连接
  19. 计算机底层:高速缓冲存储器
  20. Docker容器——容器之间的互联

热门文章

  1. java设计九宫格拼图软件哪个好用_九宫格拼图软件下载_抖音很火的九宫格拼图软件app下载_易玩网...
  2. SDNU 1040.导弹拦截
  3. 如何学C语言,新手必看!
  4. 1985年全国计算机编程大赛,关于举办2021年“中国高校计算机大赛-团体程序设计天梯赛”校内选拔赛的通知...
  5. 488 祖玛游戏 python
  6. 2017AP计算机科学5分线,2017各国际学校AP分数大比拼,看看你是啥水平
  7. 最新StarrySky星空简约记录型模板源码+Typecho内核
  8. 海康综合安防管理平台V1.5.100 用户添加和监控点添加。
  9. redis-享学课堂
  10. Coursera | Grammer and Punctuation(UCI) | Quiz