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使用点操作符访问字典(dict)数据的方法
Mar 16 Python
Python判断文件和文件夹是否存在的方法
May 21 Python
详解Python函数作用域的LEGB顺序
May 14 Python
浅谈python抛出异常、自定义异常, 传递异常
Jun 20 Python
Python实现PS图像抽象画风效果的方法
Jan 23 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
Python判断有效的数独算法示例
Feb 23 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
May 13 Python
python调试神器PySnooper的使用
Jul 03 Python
我们为什么要减少Python中循环的使用
Jul 10 Python
python函数定义和调用过程详解
Feb 09 Python
python实现发送邮件
Mar 02 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
PHP5.0对象模型探索之抽象方法和抽象类
2006/09/05 PHP
PHP 遍历XP文件夹下所有文件
2008/11/27 PHP
PHP中其实也可以用方法链
2011/11/10 PHP
PHP 输出URL的快捷方式示例代码
2013/09/22 PHP
php有效防止图片盗用、盗链的两种方法
2016/11/01 PHP
js滚动条多种样式,推荐
2007/02/05 Javascript
浅谈javascript的数据类型检测
2010/07/10 Javascript
屏蔽网页右键复制和ctrl+c复制的js代码
2013/01/04 Javascript
Function.prototype.bind用法示例
2013/09/16 Javascript
js获取URL的参数的方法(getQueryString)示例
2013/09/29 Javascript
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
前端必备神器 Snap.svg 弹动效果
2014/11/10 Javascript
javascript中返回顶部按钮的实现
2015/05/05 Javascript
JQuery和PHP结合实现动态进度条上传显示
2016/11/23 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
jQuery实现基本动画效果的方法详解
2018/09/06 jQuery
微信小程序与后台PHP交互的方法实例分析
2018/12/10 Javascript
NodeJs之word文件生成与解析的实现代码
2019/04/01 NodeJs
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
2019/09/17 Javascript
Vue v-text指令简单使用方法示例
2019/09/19 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
Python中处理字符串之islower()方法的使用简介
2015/05/19 Python
python输入错误后删除的方法
2019/10/12 Python
python Plotly绘图工具的简单使用
2020/03/03 Python
ipython jupyter notebook中显示图像和数学公式实例
2020/04/15 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
美国浴缸、水槽和水龙头购物网站:Vintage Tub & Bath
2019/11/05 全球购物
美国在线面料商店:Fashion Fabrics Club
2020/01/31 全球购物
是否可以从一个static方法内部发出对非static方法的调用?
2014/08/18 面试题
岗位竞聘演讲稿
2014/01/10 职场文书
《骆驼和羊》教学反思
2014/02/27 职场文书
学校组织向国旗敬礼活动方案(中小学适用)
2014/09/27 职场文书
群众路线教育实践活动对照检查材料思想汇报(副处级领导)
2014/10/04 职场文书
作风建设年活动实施方案
2014/10/24 职场文书
婚礼新人答谢词
2015/01/04 职场文书