python3中zip()函数使用详解


Posted in Python onJune 29, 2018

zip在python3中,处于优化内存的考虑,只能访问一次!!!(python2中可以访问多次),童鞋们一定要注意,

* coding: utf-8 *

zip()函数的定义:从参数中的多个迭代器取元素组合成一个新的迭代器;
返回: 返回一个zip对象,其内部元素为元组;可以转化为列表或元组;
传入参数: 元组、列表、字典等迭代器。
当zip()函数中只有一个参数时,zip(iterable)从iterable中依次取一个元组,组成一个元组。

在python 3.0中有个大坑,zip中的数据只能操作一次,内存就会释放,当下次

访问时就会报错,例如例子1中的输出操作

1、zip()函数单个参数

print(‘=‘*10 + “zip()函数单个参数” + ‘=‘*10) 
list1 = [1, 2, 3, 4] 
tuple1 = zip(list1)

list2=list(tuple1)

打印zip函数的返回类型

print(“zip()函数的返回类型:\n”, type(tuple1))#类型为

将zip对象转化为列表

print(“zip对象转化为列表:\n”, list(tuple1))#值为[(1,), (2,), (3,), (4,)] 
print(“zip对象转化为列表:\n”, list(tuple1))#值为[]

print(“list2输出的列表1为:\n”,list2) 
print(“list2输出的列表2为:\n”,list2)

当zip()函数有两个参数时:zip(a,b)zip()函数分别从a和b依次各取出一个元素组成
元组,再将依次组成的元组组合成一个新的迭代器?新的zip类型数据。
注意:要求a与b的维数相同,当两者具有相同的行数与列数时,正常组合对应位置元素即可;
当a与b的行数或列数不同时,取两者结构中最小的行数和列数,依照最小的行数和列数将
对应位置的元素进行组合;这时相当于调用itertools.zip_longest(*iterables)函数。

2、zip()函数有2个参数

print(‘=‘*10 + “zip()函数有2个参数” + ‘=‘*10) 
m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
n = [[2, 2, 2], [3, 3, 3], [4, 4, 4]] 
p = [[2, 2, 2], [3, 3, 3]]

行与列相同

print(“行与列相同:\n”, list(zip(m, n)))

值为[([1, 2, 3], [2, 2, 2]), ([4, 5, 6], [3, 3, 3]), ([7, 8, 9], [4, 4, 4])]

行与列不同

print(“行与列不同:\n”, list(zip(m, p)))

值为[([1, 2, 3], [2, 2, 2]), ([4, 5, 6], [3, 3, 3])]

3、zip()应用,也可以使用for循环+列表推导式实现

矩阵相加减、点乘

m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
n = [[2, 2, 2], [3, 3, 3], [4, 4, 4]]

矩阵点乘

print(‘=‘*10 + “矩阵点乘” + ‘='10)#左右两端各有10个 
print([x*y for a, b in zip(m, n) for x, y in zip(a, b)])

[2, 4, 6, 12, 15, 18, 28, 32, 36]

矩阵相加,相减雷同

print(‘=‘*10 + “矩阵相加,相减” + ‘=‘*10) 
print([x+y for a, b in zip(m, n) for x, y in zip(a, b)])

[3, 4, 5, 7, 8, 9, 11, 12, 13]

4、*zip的操作

m5=[1,2,3] 
n5=[4,5,6] 
k5=[7,8,9] 
zip5=zip(m5,n5,k5)

print(“list(zip5):”,list(zip5))不能输出,否则zip(*zip5)

就无法执行

m6,n6,k6=zip(*zip5) 
print(“m6:”,m6)#m6: (1, 2, 3) 
print(“n6:”,n6)#n6: (4, 5, 6) 
print(“k6:”,k6)#k6: (7, 8, 9)

5、*zip()函数

*zip()函数是zip()函数的逆过程,将zip对象变成原先组合前的数据。

print(‘=‘*10 + “*zip()函数” + ‘=‘*10) 
m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
n = [[2, 2, 2], [3, 3, 3], [4, 4, 4]]

print(“zip(m, n)返回:\n”, zip(m, n)) # 
print(“*zip(m, n)返回:\n”, *zip(m, n))

*zip(m, n)返回:([1, 2, 3], [2, 2, 2]) ([4, 5, 6],[3, 3, 3]) ([7, 8, 9], [4, 4, 4])

print(“list(zip(m, n))返回:\n”, list(zip(m, n)))

list(zip(m, n))返回: [([1, 2, 3], [2, 2, 2]), ([4, 5, 6], [3, 3, 3]), ([7, 8, 9], [4, 4, 4])]

m2, n2 = zip(*zip(m, n))#先合到一块 
print(“m2:”,m2)#([1, 2, 3], [4, 5, 6], [7, 8, 9]) 
print(“n2:”,n2)#([2, 2, 2], [3, 3, 3], [4, 4, 4]) 
print(m == list(m2) and n == list(n2))#true
Python 相关文章推荐
Python中的闭包实例详解
Aug 29 Python
Python中表达式x += y和x = x+y 的区别详解
Jun 20 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
Jul 12 Python
Python实现京东秒杀功能代码
May 16 Python
Python语言进阶知识点总结
May 28 Python
Python实现动态给类和对象添加属性和方法操作示例
Feb 29 Python
Django实现whoosh搜索引擎使用jieba分词
Apr 08 Python
Python中的整除和取模实例
Jun 03 Python
django 装饰器 检测登录状态操作
Jul 02 Python
opencv 阈值分割的具体使用
Jul 08 Python
Python 如何在字符串中插入变量
Aug 01 Python
Python类绑定方法及非绑定方法实例解析
Oct 09 Python
对python list 遍历删除的正确方法详解
Jun 29 #Python
通过Python模块filecmp 对文件比较的实现方法
Jun 29 #Python
Python之列表的插入&替换修改方法
Jun 28 #Python
python 寻找list中最大元素对应的索引方法
Jun 28 #Python
对numpy.append()里的axis的用法详解
Jun 28 #Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
Jun 28 #Python
将Dataframe数据转化为ndarry数据的方法
Jun 28 #Python
You might like
PHP实现多条件查询实例代码
2010/07/17 PHP
PHP面向对象程序设计方法实例详解
2016/12/24 PHP
详解PHP处理字符串类似indexof的方法函数
2017/06/11 PHP
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
JavaScript+canvas实现七色板效果实例
2016/02/18 Javascript
基于BootStarp的Dailog
2016/04/28 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
2016/06/12 Javascript
js当前页面登录注册框,固定div,底层阴影的实例代码
2016/10/04 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
微信小程序使用component自定义toast弹窗效果
2018/11/27 Javascript
extjs图表绘制之条形图实现方法分析
2020/03/06 Javascript
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
python如何实现远程控制电脑(结合微信)
2015/12/21 Python
python实现二叉查找树实例代码
2018/02/08 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2018/02/18 Python
Django uwsgi Nginx 的生产环境部署详解
2019/02/02 Python
flask应用部署到服务器的方法
2019/07/12 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
一文读懂Python 枚举
2020/08/25 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
2021/01/12 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
使用Canvas操作像素的方法
2018/06/14 HTML / CSS
Manduka官网:瑜伽垫、瑜伽毛巾和服装
2018/07/02 全球购物
波兰最大的宠物用品网上商店:FERA.PL
2019/08/11 全球购物
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
行政总经理岗位职责
2013/12/05 职场文书
上课说话检讨书大全
2014/01/22 职场文书
宿舍打麻将检讨书
2014/01/24 职场文书
环保倡议书怎么写
2014/05/16 职场文书
篮球赛口号
2014/06/18 职场文书
投资入股合作协议书
2014/10/28 职场文书
先进人物事迹材料
2014/12/29 职场文书
教师理论学习心得体会
2016/01/21 职场文书
高考要来啦!用Python爬取历年高考数据并分析
2021/06/03 Python