Python中zip函数如何使用


Posted in Python onJune 04, 2020

介绍

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
ps. 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

例子

a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]

zipped = zip(a,b) # 打包为元组的列表
# 输出:[(1, 4), (2, 5), (3, 6)]

zip(a,c) # 元素个数与最短的列表一致
# 输出:[(1, 4), (2, 5), (3, 6)]

zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]

zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。

直接看示例:

1.示例1:

代码如下:

x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
xyz = zip(x, y, z)
print xyz

运行的结果是:

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

从这个结果可以看出zip函数的基本运作方式。

2.示例2:

代码如下:

x = [1, 2, 3]
y = [4, 5, 6, 7]
xy = zip(x, y)
print xy

运行的结果是:

代码如下:

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

从这个结果可以看出zip函数的长度处理方式。

3.示例3:

代码如下:

x = [1, 2, 3]
x = zip(x)
print x

运行的结果是:

代码如下:

[(1,), (2,), (3,)]

从这个结果可以看出zip函数在只有一个参数时运作的方式。

4.示例4:

代码如下:

x = zip()
print x

运行的结果是:

代码如下:

[]

从这个结果可以看出zip函数在没有参数时运作的方式。

5.示例5:

代码如下:

x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
xyz = zip(x, y, z)
u = zip(*xyz)
print u

运行的结果是:

代码如下:

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

一般认为这是一个unzip的过程,它的运行机制是这样的:

在运行zip(*xyz)之前,xyz的值是:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

那么,zip(*xyz) 等价于 zip((1, 4, 7), (2, 5, 8), (3, 6, 9))

所以,运行结果是:[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

注:在函数调用中使用*list/tuple的方式表示将list/tuple分开,作为位置参数传递给对应函数(前提是对应函数支持不定个数的位置参数)

6.示例6:

代码如下:

x = [1, 2, 3]
r = zip(* [x] * 3)
print r

运行的结果是:

代码如下:

[(1, 1, 1), (2, 2, 2), (3, 3, 3)]

它的运行机制是这样的:

[x]生成一个列表的列表,它只有一个元素x

[x] * 3生成一个列表的列表,它有3个元素,[x, x, x]

zip(* [x] * 3)的意思就明确了,zip(x, x, x)

到此这篇关于Python中zip函数如何使用的文章就介绍到这了,更多相关Python中的zip函数用法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中的五种异常处理机制介绍
Sep 02 Python
Linux下编译安装MySQL-Python教程
Feb 02 Python
Python基于property实现类的特性操作示例
Jun 15 Python
详解爬虫被封的问题
Apr 23 Python
python实现连连看辅助之图像识别延伸
Jul 17 Python
解决python中导入win32com.client出错的问题
Jul 26 Python
浅谈Python 敏感词过滤的实现
Aug 15 Python
Python操作多维数组输出和矩阵运算示例
Nov 28 Python
深入理解Tensorflow中的masking和padding
Feb 24 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
May 15 Python
Tensorflow之MNIST CNN实现并保存、加载模型
Jun 17 Python
Python pyecharts案例超市4年数据可视化分析
Aug 14 Python
Python中有几个关键字
Jun 04 #Python
Python如何转换字符串大小写
Jun 04 #Python
如何在Python对Excel进行读取
Jun 04 #Python
opencv 查找连通区域 最大面积实例
Jun 04 #Python
Python中的Cookie模块如何使用
Jun 04 #Python
Python爬虫获取页面所有URL链接过程详解
Jun 04 #Python
Python中的全局变量如何理解
Jun 04 #Python
You might like
WordPress中给媒体文件添加分类和标签的PHP功能实现
2015/12/31 PHP
详解PHP匿名函数与注意事项
2016/03/29 PHP
PHP数组与字符串互相转换实例
2020/05/05 PHP
javascript下IE与FF兼容函数收集
2008/09/17 Javascript
Prototype 学习 Prototype对象
2009/07/12 Javascript
javascript + jquery实现定时修改文章标题
2014/03/19 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
jQuery中的ajax async同步和异步详解
2015/09/29 Javascript
浅谈时钟的生成(js手写简洁代码)
2016/08/20 Javascript
响应式表格之固定表头的简单实现
2016/08/26 Javascript
Vue项目中引入外部文件的方法(css、js、less)
2017/07/24 Javascript
JS同步、异步、延迟加载的方法
2018/05/05 Javascript
Node.js原生api搭建web服务器的方法步骤
2019/02/15 Javascript
原生js通过一行代码实现简易轮播图
2019/06/05 Javascript
Vue 中可以定义组件模版的几种方式
2019/08/06 Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
2020/01/26 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
2020/06/02 Javascript
详解阿里Node.js技术文档之process模块学习指南
2021/01/04 Javascript
手动实现把python项目发布为exe可执行程序过程分享
2014/10/23 Python
Python类方法__init__和__del__构造、析构过程分析
2015/03/06 Python
Python文件去除注释的方法
2015/05/25 Python
Python中的descriptor描述器简明使用指南
2016/06/02 Python
Django视图之ORM数据库查询操作API的实例
2017/10/27 Python
浅述python2与python3的简单区别
2018/09/19 Python
Pandas中resample方法详解
2019/07/02 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
Python3将jpg转为pdf文件的方法示例
2019/12/13 Python
Pycharm IDE的安装和使用教程详解
2020/04/30 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
2020/11/25 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
澳洲小众品牌的集合网站:BNKR
2018/02/23 全球购物
美术专业个人自我评价
2014/01/18 职场文书
企业人事任命书
2014/06/05 职场文书
电子商务优秀毕业生求职信
2014/07/11 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
5分钟教你docker安装启动redis全教程(全新方式)
2021/05/29 Redis