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操作数据库之sqlite3打开数据库、删除、修改示例
Mar 13 Python
python随机生成指定长度密码的方法
Apr 04 Python
Python标准库之Sys模块使用详解
May 23 Python
python中map()函数的使用方法示例
Sep 29 Python
基于Python __dict__与dir()的区别详解
Oct 30 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
Feb 07 Python
Python爬虫包BeautifulSoup简介与安装(一)
Jun 17 Python
python实现指定字符串补全空格、前面填充0的方法
Nov 16 Python
pandas取出重复数据的方法
Jul 04 Python
python 使用while循环输出*组成的菱形实例
Apr 12 Python
Python读取Excel一列并计算所有对象出现次数的方法
Sep 04 Python
解决IDEA翻译插件Translation报错更新TTK失败不能使用
Apr 24 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
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
2014/11/24 PHP
JS动态获取当前时间,并写到特定的区域
2013/05/03 Javascript
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
ExtJS4 表格的嵌套 rowExpander应用
2014/05/02 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
2015/01/09 Javascript
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
JavaScript将数组转换成CSV格式的方法
2015/03/19 Javascript
JavaScript实现在页面间传值的方法
2015/04/07 Javascript
JavaScript实现的简单拖拽效果
2015/06/01 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
2015/11/29 Javascript
Angularjs 创建可复用组件实例代码
2016/10/09 Javascript
JavaScript实现分页效果
2017/03/28 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
详解KOA2如何手写中间件(装饰器模式)
2018/10/11 Javascript
浅谈Vue.set实际上是什么
2019/10/17 Javascript
Vue使用vue-draggable 插件在不同列表之间拖拽功能
2020/03/12 Javascript
[04:49]期待西雅图之战 2016国际邀请赛中国区预选赛WINGS战队赛后采访
2016/06/29 DOTA
Python爬取APP下载链接的实现方法
2016/09/30 Python
vscode 远程调试python的方法
2017/12/01 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
python分治法求二维数组局部峰值方法
2018/04/03 Python
django反向解析和正向解析的方式
2018/06/05 Python
基于Python List的赋值方法
2018/06/23 Python
linux安装python修改默认python版本方法
2019/03/31 Python
django rest framework serializer返回时间自动格式化方法
2020/03/31 Python
是否可以从一个static方法内部发出对非static方法的调用?
2014/08/18 面试题
医药专业应届毕业生求职信范文
2014/01/01 职场文书
生产班组长岗位职责
2014/01/05 职场文书
办公室打字员岗位职责
2014/04/16 职场文书
公司收款委托书范本
2014/09/20 职场文书
民间借贷被告代理词
2015/05/23 职场文书
大学升旗仪式主持词
2015/07/04 职场文书
解决MySQL存储时间出现不一致的问题
2021/04/28 MySQL
如何更改Win11声音输出设备?Win11声音输出设备四种更改方法
2022/04/08 数码科技
PostgreSQL聚合函数介绍以及分组和排序
2022/04/12 PostgreSQL