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发布模块的步骤分享
Feb 21 Python
用Python的Flask框架结合MySQL写一个内存监控程序
Nov 07 Python
python环形单链表的约瑟夫问题详解
Sep 27 Python
Python 面试中 8 个必考问题
Nov 16 Python
python实现基于信息增益的决策树归纳
Dec 18 Python
python requests 库请求带有文件参数的接口实例
Jan 03 Python
Python自定义函数计算给定日期是该年第几天的方法示例
May 30 Python
在linux下实现 python 监控usb设备信号
Jul 03 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
Jul 11 Python
python对绑定事件的鼠标、按键的判断实例
Jul 17 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
Feb 28 Python
python破解同事的压缩包密码
Oct 14 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
如何开始收听短波广播
2021/03/01 无线电
php字符串按照单词进行反转的方法
2015/03/14 PHP
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
2016/11/21 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
PHP中Cookie的使用详解(简单易懂)
2017/04/28 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
PHP7基于curl实现的上传图片功能
2018/05/11 PHP
php微信公众号开发之图片回复
2018/10/20 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
关于extjs4如何获取grid修改后的数据的问题
2013/08/07 Javascript
Javascript模块化编程详解
2014/12/01 Javascript
可以浮动某个物体的jquery控件用法实例
2015/07/24 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
基于jquery实现瀑布流布局
2020/06/28 Javascript
BOM系列第二篇之定时器requestAnimationFrame
2016/08/17 Javascript
原生js和css实现图片轮播效果
2017/02/07 Javascript
详解Angular.js中$http拦截器的介绍及使用
2017/07/04 Javascript
JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
2017/08/18 Javascript
js中this的指向问题归纳总结
2018/11/28 Javascript
vant 时间选择器--开始时间和结束时间实例
2020/11/04 Javascript
Python 匹配任意字符(包括换行符)的正则表达式写法
2009/10/29 Python
跟老齐学Python之Import 模块
2014/10/13 Python
在centos7中分布式部署pyspider
2017/05/03 Python
python 获取当天凌晨零点的时间戳方法
2018/05/22 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
2020/01/08 Python
指针和引用有什么区别
2013/01/13 面试题
财政局长自荐信范文
2013/12/22 职场文书
高一英语教学反思
2014/01/22 职场文书
基层党组织整改方案
2014/10/25 职场文书
小学班主任经验交流材料
2014/12/16 职场文书
中学政教处工作总结
2015/08/13 职场文书
导游词之重庆钓鱼城
2019/09/19 职场文书
python使用glob检索文件的操作
2021/05/20 Python