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 02 Python
简单介绍Ruby中的CGI编程
Apr 10 Python
Python设计模式之代理模式简单示例
Jan 09 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
Jun 13 Python
对python中的乘法dot和对应分量相乘multiply详解
Nov 14 Python
简单了解python的break、continue、pass
Jul 08 Python
python UDP(udp)协议发送和接收的实例
Jul 22 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
Aug 26 Python
python实现人工智能Ai抠图功能
Sep 05 Python
关于Numpy中的行向量和列向量详解
Nov 30 Python
Python request操作步骤及代码实例
Apr 13 Python
Python如何安装第三方模块
May 28 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实现JS中escape与unescape的方法
2016/07/11 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
2017/04/05 PHP
php的常量和变量实例详解
2017/06/27 PHP
php源码的安装方法和实例
2019/09/26 PHP
[原创]图片分页查看
2006/08/28 Javascript
Prototype使用指南之array.js
2007/01/10 Javascript
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
javascript中关于break,continue的特殊用法与介绍
2012/05/24 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
Javascript毫秒数用法实例
2015/02/05 Javascript
javascript实现回到顶部特效
2015/05/06 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
javascript防篡改对象实例详解
2017/04/10 Javascript
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
vue实现未登录跳转到登录页面的方法
2018/07/17 Javascript
浅谈Vue CLI 3结合Lerna进行UI框架设计
2019/04/14 Javascript
如何在项目中使用log4.js的方法步骤
2019/07/16 Javascript
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
原生JS实现多条件筛选
2020/08/19 Javascript
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
python类中super() 的使用解析
2019/12/19 Python
python标识符命名规范原理解析
2020/01/10 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
Keras模型转成tensorflow的.pb操作
2020/07/06 Python
法国时尚品牌乐都特瑞士站:La Redoute瑞士
2016/09/05 全球购物
英国汽车座椅和婴儿车购物网站:Uber Kids
2017/04/19 全球购物
西班牙香水和化妆品网上商店:Douglas
2017/10/29 全球购物
2014信息公开实施方案
2014/02/22 职场文书
创建文明学校实施方案
2014/03/11 职场文书
安全协议书
2014/04/23 职场文书
学校教师读书活动总结
2014/07/08 职场文书
乡镇计划生育工作汇报
2014/10/28 职场文书
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
Java8 CompletableFuture 异步回调
2022/04/28 Java/Android