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实现随机生成有效手机号码及身份证功能示例
Jun 05 Python
Python网络编程 Python套接字编程
Sep 13 Python
django中send_mail功能实现详解
Feb 06 Python
Python模拟随机游走图形效果示例
Feb 06 Python
PyCharm安装第三方库如Requests的图文教程
May 18 Python
python导入坐标点的具体操作
May 10 Python
Python lambda表达式filter、map、reduce函数用法解析
Sep 11 Python
Python实现元素等待代码实例
Nov 11 Python
python yield和Generator函数用法详解
Feb 10 Python
Python3标准库glob文件名模式匹配的问题
Mar 13 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
Oct 04 Python
python 如何做一个识别率百分百的OCR
May 29 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学习 运算符与运算符优先级
2008/06/15 PHP
php 多线程上下文中安全写文件实现代码
2009/12/28 PHP
PHP下打开URL地址的几种方法小结
2010/05/16 PHP
php 人员权限管理(RBAC)实例(推荐)
2017/05/24 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
jquery text,radio,checkbox,select操作实现代码
2009/07/09 Javascript
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
javascript学习笔记(十八) 获得页面中的元素代码
2012/06/20 Javascript
关于div自适应高度/左右高度自适应一致的js代码
2013/03/22 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
2013/10/11 Javascript
动态加载JS文件的三种方法
2013/11/08 Javascript
vuejs动态组件给子组件传递数据的方法详解
2016/09/09 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
Nodejs之http的表单提交
2017/07/07 NodeJs
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
详解vue组件之间的通信
2020/08/30 Javascript
python计算牛顿迭代多项式实例分析
2015/05/07 Python
K-近邻算法的python实现代码分享
2017/12/09 Python
python 实现数组list 添加、修改、删除的方法
2018/04/04 Python
python list转矩阵的实例讲解
2018/08/04 Python
python 读取Linux服务器上的文件方法
2018/12/27 Python
对python中字典keys,values,items的使用详解
2019/02/03 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
ziaja齐叶雅官方海外旗舰店:来自波兰的天然护肤品牌
2017/01/02 全球购物
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
护士检查书
2014/01/17 职场文书
个人授权委托书
2014/09/15 职场文书
党的群众路线教育实践活动对照检查材料
2014/09/22 职场文书
2015大学生党员自我评价范文
2015/03/03 职场文书
2016年第32个教师节致辞
2015/11/26 职场文书
Javascript使用integrity属性进行安全验证
2021/11/07 Javascript
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android