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实现的扫雷游戏实例代码
Aug 01 Python
pygame学习笔记(1):矩形、圆型画图实例
Apr 15 Python
Python二叉搜索树与双向链表转换实现方法
Apr 29 Python
Python使用三种方法实现PCA算法
Dec 12 Python
78行Python代码实现现微信撤回消息功能
Jul 26 Python
详解Django中CBV(Class Base Views)模型源码分析
Feb 25 Python
pandas删除行删除列增加行增加列的实现
Jul 06 Python
Pytorch中accuracy和loss的计算知识点总结
Sep 10 Python
python对Excel的读取的示例代码
Feb 14 Python
Python基于stuck实现scoket文件传输
Apr 02 Python
Python virtualenv虚拟环境实现过程解析
Apr 18 Python
Python爬虫之爬取某文库文档数据
Apr 21 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
《星际争霸2》终章已出 RTS时代宣告终结
2017/02/07 星际争霸
PHP PDO函数库详解
2010/04/27 PHP
PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
2010/07/09 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
Javascript 类与静态类的实现
2010/04/01 Javascript
理解Javascript_10_对象模型
2010/10/16 Javascript
JavaScript包装对象使用介绍
2013/08/29 Javascript
jQuery实现新消息闪烁标题提示的方法
2015/03/11 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
Bootstrap模态框调用功能实现方法
2016/09/19 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
JS/HTML5游戏常用算法之追踪算法实例详解
2018/12/12 Javascript
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
layui点击弹框页面 表单请求的方法
2019/09/21 Javascript
微信小程序音乐播放器开发
2019/11/20 Javascript
使用vue实现HTML页面生成图片的方法
2020/03/12 Javascript
python统计一个文本中重复行数的方法
2014/11/19 Python
Python实现插入排序和选择排序的方法
2019/05/12 Python
PyTorch搭建一维线性回归模型(二)
2019/05/22 Python
Python实现平行坐标图的两种方法小结
2019/07/04 Python
PyCharm中代码字体大小调整方法
2019/07/29 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
10个python爬虫入门基础代码实例 + 1个简单的python爬虫完整实例
2020/12/16 Python
详解css3 Transition属性(平滑过渡菜单栏案例)
2017/09/05 HTML / CSS
StubHub墨西哥:购买和出售您的门票
2016/09/17 全球购物
将世界上最美丽的摄影作品转化为艺术作品:Photos.com
2017/11/28 全球购物
英国乡村时尚和宠物用品专家:Pet & Country
2018/07/02 全球购物
金融专业推荐信
2013/11/14 职场文书
支教自我鉴定
2014/01/18 职场文书
探亲邀请信范文
2014/01/30 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
部门年终奖分配方案
2014/05/07 职场文书
校长师德师风自我剖析材料
2014/09/29 职场文书
公务员年终个人总结
2015/02/12 职场文书
民事撤诉申请书范本
2015/05/18 职场文书
贷款担保书范本
2015/09/22 职场文书