Python中zip()函数用法实例教程


Posted in Python onJuly 31, 2014

本文实例讲述了Python中zip()函数的定义及用法,相信对于Python初学者有一定的借鉴价值。详情如下:

一、定义:

zip([iterable, ...])
zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压)。

二、用法示例:

读者看看下面的例子,对zip()函数的基本用法就可以明白了:

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)
[(1, 2, 3), (4, 5, 6)]

对于这个并不是很常用函数,下面举几个例子说明它的用法:

1.二维矩阵变换(矩阵的行列互换)

比如我们有一个由列表描述的二维矩阵

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

2.以指定概率获取元素

>>> 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 相关文章推荐
按日期打印Python的Tornado框架中的日志的方法
May 02 Python
Python读取Json字典写入Excel表格的方法
Jan 03 Python
python如何求解两数的最大公约数
Sep 27 Python
Python文件监听工具pyinotify与watchdog实例
Oct 15 Python
python实现简易淘宝购物
Nov 22 Python
浅析Python数字类型和字符串类型的内置方法
Dec 22 Python
Tensorflow实现部分参数梯度更新操作
Jan 23 Python
Python列表list操作相关知识小结
Jan 29 Python
Python基于network模块制作电影人物关系图
Jun 19 Python
Python如何绘制日历图和热力图
Aug 07 Python
python 实现批量图片识别并翻译
Nov 02 Python
Python tkinter实现日期选择器
Feb 22 Python
Python中apply函数的用法实例教程
Jul 31 #Python
python新手经常遇到的17个错误分析
Jul 30 #Python
Python使用PyGreSQL操作PostgreSQL数据库教程
Jul 30 #Python
Python代码的打包与发布详解
Jul 30 #Python
Python中lambda的用法及其与def的区别解析
Jul 28 #Python
python代码制作configure文件示例
Jul 28 #Python
python编写网页爬虫脚本并实现APScheduler调度
Jul 28 #Python
You might like
php获取url字符串截取路径的文件名和扩展名的函数
2010/01/22 PHP
服务器web工具 php环境下
2010/12/29 PHP
使用php实现截取指定长度
2013/08/06 PHP
PHP学习笔记(一) 简单了解PHP
2014/08/04 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
浅谈PHP各环境下的伪静态配置
2019/03/13 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
2019/05/23 PHP
Jquery读取URL参数小例子
2013/08/30 Javascript
javascript表单验证使用示例(javascript验证邮箱)
2014/01/07 Javascript
动态加载js、css等文件跨iframe实现
2014/02/24 Javascript
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
2016/09/18 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
AngularJS自定义指令之复制指令实现方法
2017/05/18 Javascript
vue-cli开发环境实现跨域请求的方法
2018/04/07 Javascript
vue双向数据绑定知识点总结
2018/04/18 Javascript
JavaScript实现一个简易的计算器实例代码
2018/05/10 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
[01:08:00]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例
2014/06/10 Python
Python可变参数函数用法实例
2015/07/07 Python
python利用有道翻译实现&quot;语言翻译器&quot;的功能实例
2017/11/14 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
2019/08/12 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
wxPython:python首选的GUI库实例分享
2019/10/05 Python
python NumPy ndarray二维数组 按照行列求平均实例
2019/11/26 Python
python实现批量处理将图片粘贴到另一张图片上并保存
2019/12/12 Python
python实现的Iou与Giou代码
2020/01/18 Python
英国最大的老式糖果店:A Quarter Of
2017/04/08 全球购物
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
护士岗前培训自我评鉴
2014/02/28 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
调研座谈会发言材料
2014/08/23 职场文书
2015年音乐教师个人工作总结
2015/05/20 职场文书
php 解析非标准json、非规范json
2021/04/01 PHP