Python中zip函数如何使用


Posted in Python onJune 04, 2020

介绍

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
ps. 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

例子

a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]

zipped = zip(a,b) # 打包为元组的列表
# 输出:[(1, 4), (2, 5), (3, 6)]

zip(a,c) # 元素个数与最短的列表一致
# 输出:[(1, 4), (2, 5), (3, 6)]

zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]

zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。

直接看示例:

1.示例1:

代码如下:

x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
xyz = zip(x, y, z)
print xyz

运行的结果是:

[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

从这个结果可以看出zip函数的基本运作方式。

2.示例2:

代码如下:

x = [1, 2, 3]
y = [4, 5, 6, 7]
xy = zip(x, y)
print xy

运行的结果是:

代码如下:

[(1, 4), (2, 5), (3, 6)]

从这个结果可以看出zip函数的长度处理方式。

3.示例3:

代码如下:

x = [1, 2, 3]
x = zip(x)
print x

运行的结果是:

代码如下:

[(1,), (2,), (3,)]

从这个结果可以看出zip函数在只有一个参数时运作的方式。

4.示例4:

代码如下:

x = zip()
print x

运行的结果是:

代码如下:

[]

从这个结果可以看出zip函数在没有参数时运作的方式。

5.示例5:

代码如下:

x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
xyz = zip(x, y, z)
u = zip(*xyz)
print u

运行的结果是:

代码如下:

[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

一般认为这是一个unzip的过程,它的运行机制是这样的:

在运行zip(*xyz)之前,xyz的值是:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

那么,zip(*xyz) 等价于 zip((1, 4, 7), (2, 5, 8), (3, 6, 9))

所以,运行结果是:[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

注:在函数调用中使用*list/tuple的方式表示将list/tuple分开,作为位置参数传递给对应函数(前提是对应函数支持不定个数的位置参数)

6.示例6:

代码如下:

x = [1, 2, 3]
r = zip(* [x] * 3)
print r

运行的结果是:

代码如下:

[(1, 1, 1), (2, 2, 2), (3, 3, 3)]

它的运行机制是这样的:

[x]生成一个列表的列表,它只有一个元素x

[x] * 3生成一个列表的列表,它有3个元素,[x, x, x]

zip(* [x] * 3)的意思就明确了,zip(x, x, x)

到此这篇关于Python中zip函数如何使用的文章就介绍到这了,更多相关Python中的zip函数用法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python使用MySQLdb for Python操作数据库教程
Oct 11 Python
Python爬虫DNS解析缓存方法实例分析
Jun 02 Python
python实现nao机器人手臂动作控制
Apr 29 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
May 10 Python
Python实用工具FuckIt.py介绍
Jul 02 Python
Python中bisect的使用方法
Dec 31 Python
python无序链表删除重复项的方法
Jan 17 Python
基于keras输出中间层结果的2种实现方式
Jan 24 Python
python多项式拟合之np.polyfit 和 np.polyld详解
Feb 18 Python
更新升级python和pip版本后不生效的问题解决
Apr 17 Python
Python打包exe时各种异常处理方案总结
May 18 Python
python+opencv实现目标跟踪过程
Jun 21 Python
Python中有几个关键字
Jun 04 #Python
Python如何转换字符串大小写
Jun 04 #Python
如何在Python对Excel进行读取
Jun 04 #Python
opencv 查找连通区域 最大面积实例
Jun 04 #Python
Python中的Cookie模块如何使用
Jun 04 #Python
Python爬虫获取页面所有URL链接过程详解
Jun 04 #Python
Python中的全局变量如何理解
Jun 04 #Python
You might like
自己写了一个php检测文件编码的函数
2014/04/21 PHP
thinkphp缓存技术详解
2014/12/09 PHP
php缓冲输出实例分析
2015/01/05 PHP
php模拟用户自动在qq空间发表文章的方法
2015/01/07 PHP
php通过smtp邮件验证登陆的方法
2016/05/11 PHP
jquery 双色表格实现代码
2009/12/08 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
2014/02/12 Javascript
a标签click和href执行顺序探讨
2014/06/23 Javascript
JavaScript编程中容易出BUG的几点小知识
2015/01/31 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
深入理解javascript中的 “this”
2017/01/17 Javascript
jQuery实现图片滑动效果
2017/03/08 Javascript
详解vue.js全局组件和局部组件
2017/04/10 Javascript
JS中Safari浏览器中的Date
2017/07/17 Javascript
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
2017/12/16 jQuery
vue组件传递对象中实现单向绑定的示例
2018/02/28 Javascript
基于ionic实现下拉刷新功能
2018/05/10 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
2019/01/21 Javascript
Python爬虫爬验证码实现功能详解
2016/04/14 Python
python 函数传参之传值还是传引用的分析
2017/09/07 Python
基于Django的python验证码(实例讲解)
2017/10/23 Python
基于python代码实现简易滤除数字的方法
2018/07/17 Python
用python一行代码得到数组中某个元素的个数方法
2019/01/28 Python
python 画二维、三维点之间的线段实现方法
2019/07/07 Python
python多线程共享变量的使用和效率方法
2019/07/16 Python
用HTML5实现网站在windows8中贴靠的方法
2013/04/21 HTML / CSS
canvas裁剪clip()函数的具体使用
2018/03/01 HTML / CSS
英国天然有机美容护肤品:Neal’s Yard Remedies
2018/05/05 全球购物
个人借款担保书
2014/04/02 职场文书
教育基金募捐倡议书
2014/05/14 职场文书
供用电专业求职信
2014/07/07 职场文书
企业财务经理岗位职责
2015/04/08 职场文书
2016学习雷锋精神活动倡议书
2015/04/27 职场文书
研究生论文答辩开场白
2015/05/27 职场文书
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers