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使用socket远程连接错误处理方法
Apr 29 Python
python urllib urlopen()对象方法/代理的补充说明
Jun 29 Python
django实现登录时候输入密码错误5次锁定用户十分钟
Nov 05 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
May 29 Python
深入浅析python3中的unicode和bytes问题
Jul 03 Python
Python实现某论坛自动签到功能
Aug 20 Python
Python使用random模块生成随机数操作实例详解
Sep 17 Python
Python字符串中删除特定字符的方法
Jan 15 Python
python实现录屏功能(亲测好用)
Mar 02 Python
python 视频下载神器(you-get)的具体使用
Jan 06 Python
SpringBoot首页设置解析(推荐)
Feb 11 Python
python字典的元素访问实例详解
Jul 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
PHP 数组实例说明
2008/08/18 PHP
php根据用户名和手机号查询是否存在手机号码
2017/02/16 PHP
Yii2结合Workerman的websocket示例详解
2018/09/10 PHP
PHP自动载入类文件函数__autoload的使用方法
2019/03/25 PHP
表单验证的完整应用案例探讨
2013/03/29 Javascript
分享一个自己动手写的jQuery分页插件
2014/08/28 Javascript
jquery自动补齐功能插件flexselect用法示例
2016/08/06 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
jQuery实现QQ空间汉字转拼音功能示例
2017/07/10 jQuery
JavaScript实现二叉树的先序、中序及后序遍历方法详解
2017/10/26 Javascript
详解javascript函数写法大全
2019/03/25 Javascript
Python学习笔记(二)基础语法
2014/06/06 Python
Python中关于使用模块的基础知识
2015/05/24 Python
python如何通过protobuf实现rpc
2016/03/06 Python
python Django批量导入数据
2016/03/25 Python
Python numpy 常用函数总结
2017/12/07 Python
python中Apriori算法实现讲解
2017/12/10 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
2019/06/17 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
Python获取一个用户名的组ID过程解析
2019/09/03 Python
Python Pickle 实现在同一个文件中序列化多个对象
2019/12/30 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
美国维生素、补充剂、保健食品购物网站:Vitacost
2016/08/05 全球购物
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
乔迁之喜主持词
2014/03/27 职场文书
授权委托书范本(单位)
2014/09/28 职场文书
2014年军人思想汇报范文
2014/10/12 职场文书
2014年妇委会工作总结
2014/12/10 职场文书
小学优秀学生评语
2014/12/29 职场文书
幼儿园教师考核评语
2014/12/31 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
本科毕业答辩开场白
2015/05/27 职场文书
医疗纠纷调解协议书
2015/08/06 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python