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和pyqt实现360的CLable控件
Feb 21 Python
Windows下实现Python2和Python3两个版共存的方法
Jun 12 Python
Python使用django框架实现多人在线匿名聊天的小程序
Nov 29 Python
Python字典及字典基本操作方法详解
Jan 30 Python
python web基础之加载静态文件实例
Mar 20 Python
opencv python 基于KNN的手写体识别的实例
Aug 03 Python
python 并发下载器实现方法示例
Nov 22 Python
python 实现从高分辨图像上抠取图像块
Jan 02 Python
Python统计文本词汇出现次数的实例代码
Feb 27 Python
Java如何基于wsimport调用wcf接口
Jun 17 Python
python文件名批量重命名脚本实例代码
Apr 22 Python
用Python爬虫破解滑动验证码的案例解析
May 06 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输出控制功能在简繁体转换中的应用
2006/10/09 PHP
实现分十页分向前十页向后十页的处理
2006/10/09 PHP
使用PHP生成二维码的两种方法(带logo图像)
2014/03/14 PHP
谈谈php对接芝麻信用踩的坑
2016/12/01 PHP
js防止表单重复提交实现代码
2012/09/05 Javascript
使用Bootstrap typeahead插件实现搜索框自动补全的方法
2016/07/07 Javascript
详解angular中如何监控dom渲染完毕
2017/01/03 Javascript
Angular实现可删除并计算总金额的购物车功能示例
2017/12/26 Javascript
vue系列之requireJs中引入vue-router的方法
2018/07/18 Javascript
JavaScript选择排序算法原理与实现方法示例
2018/08/06 Javascript
Nuxt.js 数据双向绑定的实现
2019/02/17 Javascript
详解mpvue开发微信小程序基础知识
2019/09/23 Javascript
React-redux实现小案例(todolist)的过程
2019/09/29 Javascript
[05:03]显微镜下的DOTA2第十期——Ti3豪之超神幽鬼
2014/06/23 DOTA
跟老齐学Python之Python安装
2014/09/12 Python
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
Python计算三维矢量幅度的方法
2015/06/15 Python
详解Python的Lambda函数与排序
2016/10/25 Python
在Windows中设置Python环境变量的实例讲解
2018/04/28 Python
Python函数和模块的使用总结
2019/05/20 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
2020/01/14 Python
Python3操作YAML文件格式方法解析
2020/04/10 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
预备党员党校学习自我评价分享
2013/11/12 职场文书
高中毕业生生活的自我评价
2013/12/08 职场文书
物流司机岗位职责
2013/12/28 职场文书
蔬菜基地的创业计划书
2014/01/06 职场文书
最新会计专业求职信范文
2014/01/28 职场文书
签约仪式策划方案
2014/06/02 职场文书
团日活动总结报告
2014/06/25 职场文书
部门2014年度工作总结
2014/11/12 职场文书
装饰技术负责人岗位职责
2015/04/13 职场文书
离婚答辩状怎么写
2015/05/22 职场文书
2015年国培研修感言
2015/08/01 职场文书
Golang 正则匹配效率详解
2021/04/25 Golang
Android Rxjava3 使用场景详解
2022/04/07 Java/Android