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实现360皮肤按钮控件示例
Feb 21 Python
Python实现二分查找算法实例
May 26 Python
python中装饰器级连的使用方法示例
Sep 29 Python
numpy使用fromstring创建矩阵的实例
Jun 15 Python
Python中的函数式编程:不可变的数据结构
Oct 08 Python
简单了解Django ContentType内置组件
Jul 23 Python
PyQt5实现暗黑风格的计时器
Jul 29 Python
pygame实现烟雨蒙蒙下彩虹雨
Nov 11 Python
Pytorch中.new()的作用详解
Feb 18 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
Mar 12 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
Nov 13 Python
Python进程间的通信之语法学习
Apr 11 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&amp;java(一)
2006/10/09 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
2012/09/04 PHP
php中apc缓存使用示例
2013/12/25 PHP
ajax+php控制所有后台函数调用
2015/07/15 PHP
PHP中模糊查询并关联三个select框
2017/06/19 PHP
php+mysql实现的无限分类方法类定义与使用示例
2020/05/27 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
jQuery模拟点击A标记示例参考
2014/04/17 Javascript
jQuery取得设置清空select选择的文本与值
2014/07/08 Javascript
Ajax中解析Json的两种方法对比分析
2015/06/25 Javascript
基于jQuery实现点击弹出层实例代码
2016/01/01 Javascript
基于vue的fullpage.js单页滚动插件
2017/03/20 Javascript
使用JavaScript开发跨平台的桌面应用详解
2017/07/27 Javascript
dropload.js插件下拉刷新和上拉加载使用详解
2017/10/20 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
如何为vuex实现带参数的 getter和state.commit
2019/01/04 Javascript
javascript实现异形滚动轮播
2019/11/28 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
[01:05:40]VG vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
TensorFlow入门使用 tf.train.Saver()保存模型
2018/04/24 Python
python使用thrift教程的方法示例
2019/03/21 Python
numpy中的ndarray方法和属性详解
2019/05/27 Python
python的pstuil模块使用方法总结
2019/07/26 Python
python实现连连看游戏
2020/02/14 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
世界最大的票务市场:viagogo
2017/02/16 全球购物
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
德国最新街头服饰网上商店:BODYCHECK
2019/09/15 全球购物
咖啡店自主创业商业计划书
2014/01/22 职场文书
大学生活动策划方案
2014/02/10 职场文书
客服部班长工作责任制
2014/02/25 职场文书
2014年英语工作总结
2014/12/20 职场文书
2016年党员公开承诺书格式范文
2016/03/24 职场文书
Go各时间字符串使用解析
2021/04/02 Golang
一篇文章看懂MySQL主从复制与读写分离
2021/11/07 MySQL