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中函数eval和ast.literal_eval的区别详解
Aug 10 Python
Python实现的寻找前5个默尼森数算法示例
Mar 25 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
Mar 27 Python
Pandas库之DataFrame使用的学习笔记
Jun 21 Python
set在python里的含义和用法
Jun 24 Python
Python Threading 线程/互斥锁/死锁/GIL锁
Jul 21 Python
DJango的创建和使用详解(默认数据库sqlite3)
Nov 18 Python
python新手学习可变和不可变对象
Jun 11 Python
浅析Python的命名空间与作用域
Nov 25 Python
pycharm 的Structure界面设置操作
Feb 05 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
Feb 23 Python
Python可视化学习之matplotlib内置单颜色
Feb 24 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 Session会话超时时间设置方法
2014/06/10 PHP
浅析php原型模式
2014/11/25 PHP
PHP连接SQLServer2005的方法
2015/01/27 PHP
PHP简单日历实现方法
2016/07/20 PHP
Yii2.0中的COOKIE和SESSION用法
2016/08/12 PHP
JS代码格式化和语法着色V2
2006/10/14 Javascript
JavaScript 对话框和状态栏使用说明
2009/10/25 Javascript
jquery下实现overlay遮罩层代码
2010/08/25 Javascript
jquery $.each()使用探讨
2013/09/23 Javascript
jquery获取复选框被选中的值
2014/03/22 Javascript
JavaScript学习笔记之JS函数
2015/01/22 Javascript
JS实现自适应高度表单文本框的方法
2015/02/25 Javascript
jquery 多个radio的click事件实例
2016/12/03 Javascript
详解JavaScript中的属性和特性
2016/12/08 Javascript
vue与bootstrap实现时间选择器的示例代码
2017/08/26 Javascript
JS中关于正则的巧妙操作
2017/08/31 Javascript
详解ES6系列之私有变量的实现
2018/11/21 Javascript
vscode下vue项目中eslint的使用方法
2019/01/13 Javascript
封装一下vue中的axios示例代码详解
2020/02/16 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
2020/07/14 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
react实现复选框全选和反选组件效果
2020/08/25 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队LGD晋级之路
2018/04/07 DOTA
Python函数式编程指南(三):迭代器详解
2015/06/24 Python
python 的列表遍历删除实现代码
2020/04/12 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
python对验证码降噪的实现示例代码
2019/11/12 Python
Python计算信息熵实例
2020/06/18 Python
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
学习党课思想汇报
2013/12/29 职场文书
销售主管的自我评价分享
2014/01/03 职场文书
推荐信模板
2014/05/09 职场文书
校友回访母校寄语
2015/02/26 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
吃通javascript正则表达式
2021/04/21 Javascript
详解如何用Python实现感知器算法
2021/06/18 Python