python中的 zip函数详解及用法举例


Posted in Python onFebruary 16, 2020

python中zip()函数用法举例

定义:zip([iterable, ...])

zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压),看下面的例子就明白了:

示例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)]

示例2,在两个list长度不相等时的情况:

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

print xy运行的结果是:

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

示例3

>>> name=('jack','beginman','sony','pcky')
>>> age=(2001,2003,2005,2000)
>>> for a,n in zip(name,age):
  print a,n

输出:

jack 2001 beginman 2003 sony 2005 pcky 2000

示例4,只有一个list的情况:

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

print x运行的结果是:

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

示例5:

搭配for循环,支持并行迭代操作方法 zip()方法用在for循环中,就会支持并行迭代:

l1 = [2,3,4]

l2 = [4,5,6]

for (x,y) in zip(l1,l2):


 print x,y,'--',x*y
2 4 -- 8
3 5 -- 15
4 6 -- 24

其实它的工作原理就是使用了zip()的结果,在for循环里解包zip结果中的元组,用元组赋值运算。就好像(x,y)=(2,6),赋值、序列解包操作。在对文件的操作中我们也会用到遍历,例如Python遍历文件夹目录与文件操作,就是很方便实用的。

1

示例6:二维矩阵变换(矩阵的行列互换)

比如我们有一个由列表描述的二维矩阵 ,a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]],通过python列表推导的方法,我们也能轻易完成这个任务

 

 print [ [row[col] for row in a] for col in range(len(a[0]))] [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

另外一种让人困惑的方法就是利用zip函数:

>>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

>>> zip(*a) [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

>>> map(list,zip(*a))

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

这种方法速度更快但也更难以理解,将list看成tuple解压,恰好得到我们“行列互换”的效果,再通过对每个元素应用list()函数,将tuple转换为list

示例7:以指定概率获取元素

>>> import random 
>>> def random_pick(seq,probabilities): 
 
x = random.uniform(0, 1) 

 cumulative_probability = 0.0 
 
for item, item_probability in zip(seq, probabilities): 
 
cumulative_probability += item_probability 

 if x < cumulative_probability: 
 

break 
 
return item 

>>> for i in range(15): 

random_pick("abc",[0.1,0.3,0.6]) 

'c' 'b' 'c' 'c' 'a' 'b' 'c' 'c' 'c' 'a' 'b' 'b' 'c' 'a' 'c'

这个函数有个限制,指定概率的列表必须和元素一一对应,而且和为1,否则这个函数可能不能像预想的那样工作。稍微解释下,先利用random.uniform()函数生成一个0-1之间的随机数并复制给x,利用zip()函数将元素和他对应的概率打包成tuple,然后将每个元素的概率进行叠加,直到和大于x终止循环

这样,”a”被选中的概率就是x取值位于0-0.1的概率,同理”b”为0.1-0.4,”c”为0.4-1.0,假设x是在0-1之间平均取值的,显然我们的目的已经达到

总结

以上所述是小编给大家介绍的python中的 zip函数详解及用法举例,希望对大家有所帮助!

Python 相关文章推荐
python根据日期返回星期几的方法
Jul 06 Python
python的Tqdm模块的使用
Jan 10 Python
django初始化数据库的实例
May 27 Python
值得收藏,Python 开发中的高级技巧
Nov 23 Python
python利用requests库模拟post请求时json的使用教程
Dec 07 Python
Python中py文件转换成exe可执行文件的方法
Jun 14 Python
Python帮你识破双11的套路
Nov 11 Python
基于python判断目录或者文件代码实例
Nov 29 Python
Python ORM框架Peewee用法详解
Apr 29 Python
Python classmethod装饰器原理及用法解析
Oct 17 Python
python如何利用paramiko执行服务器命令
Nov 07 Python
深入理解Python变量的数据类型和存储
Feb 01 Python
Python中zip()函数的解释和可视化(实例详解)
Feb 16 #Python
解决tensorboard多个events文件显示紊乱的问题
Feb 15 #Python
使用Tensorboard工具查看Loss损失率
Feb 15 #Python
Keras使用tensorboard显示训练过程的实例
Feb 15 #Python
Python利用逻辑回归分类实现模板
Feb 15 #Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
Feb 15 #Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
Feb 15 #Python
You might like
PHP的FTP学习(三)
2006/10/09 PHP
CodeIgniter框架过滤HTML危险代码
2014/06/12 PHP
php使用CURL伪造IP和来源实例详解
2015/01/15 PHP
php实现对短信验证码发送次数的限制实例讲解
2021/03/04 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
onpropertypchange
2006/07/01 Javascript
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
javascript解析json实例详解
2014/11/05 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
JavaScript三元运算符的多种使用技巧
2015/04/16 Javascript
jQuery+ajax实现无刷新级联菜单示例
2015/05/21 Javascript
jQuery双向列表选择器DIV模拟版
2016/11/01 Javascript
js字符串操作总结(必看篇)
2016/11/22 Javascript
jquery购物车结算功能实现方法
2020/10/29 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
2017/04/20 Javascript
jQuery中$原理实例分析
2018/08/13 jQuery
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
在django中使用自定义标签实现分页功能
2017/07/04 Python
Python_LDA实现方法详解
2017/10/25 Python
Python列表推导式与生成器表达式用法示例
2018/02/08 Python
Python正则表达式指南 推荐
2018/10/09 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
css3实现背景动态渐变效果
2019/12/10 HTML / CSS
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
服务员自我评价
2014/01/25 职场文书
入党积极分子自我鉴定
2014/02/18 职场文书
技术入股合作协议书
2014/10/07 职场文书
四风问题原因分析及整改措施
2014/10/24 职场文书
英文自荐信范文
2015/03/25 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
优秀班主任工作总结2015
2015/05/25 职场文书
2016优秀大学生个人事迹材料范文
2016/03/01 职场文书