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 17 Python
使用Python多线程爬虫爬取电影天堂资源
Sep 23 Python
Python正则表达式经典入门教程
May 22 Python
python机器学习理论与实战(二)决策树
Jan 19 Python
在python中安装basemap的教程
Sep 20 Python
在numpy矩阵中令小于0的元素改为0的实例
Jan 26 Python
python基础梳理(一)(推荐)
Apr 06 Python
使用pyecharts生成Echarts网页的实例
Aug 12 Python
Python datetime包函数简单介绍
Aug 28 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
Nov 25 Python
深入浅析python的第三方库pandas
Feb 13 Python
python自动化发送邮件实例讲解
Jan 04 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实现链结人气统计
2006/10/09 PHP
php实现从ftp服务器上下载文件树到本地电脑的程序
2009/02/10 PHP
解析PHP对现有搜索引擎的调用
2013/06/25 PHP
php实现文件下载代码分享
2014/08/19 PHP
PHP也能干大事 随机函数
2015/04/14 PHP
php基于CodeIgniter实现图片上传、剪切功能
2016/05/14 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
flash 得到自身url参数的代码
2009/11/15 Javascript
33种Javascript 表格排序控件收集
2009/12/03 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
JS数组array元素的添加和删除方法代码实例
2015/06/01 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
js实现图片轮播效果学习笔记
2017/07/26 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
js回溯法计算最佳旅行线路代码实例
2019/09/11 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
JS实现小星星特效
2019/12/24 Javascript
linux环境下安装pyramid和新建项目的步骤
2013/11/27 Python
Python中死锁的形成示例及死锁情况的防止
2016/06/14 Python
python基于itchat模块实现微信防撤回
2019/04/29 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
2020/03/13 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
基于DOM+CSS3实现OrgChart组织结构图插件
2016/03/02 HTML / CSS
平面设计师工作职责范文
2013/12/03 职场文书
婚礼证婚人证婚词
2014/01/08 职场文书
校庆活动方案
2014/03/31 职场文书
学校学雷锋活动总结
2014/06/26 职场文书
网络工程专业大学生求职信
2014/10/01 职场文书
淘宝客服专员岗位职责
2015/04/07 职场文书
挂职锻炼工作总结2015
2015/05/28 职场文书
2015国庆66周年宣传语
2015/07/14 职场文书
Python 如何解决稀疏矩阵运算
2021/05/26 Python