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列表操作使用示例分享
Feb 21 Python
使用IPython下的Net-SNMP来管理类UNIX系统的教程
Apr 15 Python
Python脚本实现自动将数据库备份到 Dropbox
Feb 06 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
Mar 12 Python
详谈Python基础之内置函数和递归
Jun 21 Python
python机器学习实战之树回归详解
Dec 20 Python
python爬虫的数据库连接问题【推荐】
Jun 25 Python
Python基于多线程操作数据库相关问题分析
Jul 11 Python
Django之模板层的实现代码
Sep 09 Python
解决tensorflow打印tensor有省略号的问题
Feb 04 Python
python 等差数列末项计算方式
May 03 Python
Python如何用wx模块创建文本编辑器
Jun 07 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
PHP实现文件安全下载
2006/10/09 PHP
php 处理上百万条的数据库如何提高处理查询速度
2010/02/08 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
PHP实现数组的笛卡尔积运算示例
2017/12/15 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
PHP children()函数讲解
2019/02/03 PHP
javascript之水平横向滚动歌词同步的应用
2007/05/07 Javascript
javascript 打印页面代码
2009/03/24 Javascript
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
2014/06/23 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
2015/08/07 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
浅析Jquery操作select
2016/12/13 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
JavaScript门面模式详解
2017/10/19 Javascript
详解vue渲染函数render的使用
2017/12/12 Javascript
JavaScript异步加载问题总结
2018/02/17 Javascript
JS表单传值和URL编码转换
2018/03/03 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
2019/02/18 Javascript
用node撸一个监测复联4开售短信提醒的实现代码
2019/04/10 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
2019/10/25 Javascript
微信小程序收藏功能的实现代码
2020/06/19 Javascript
JavaScript中的几种继承方法示例
2020/12/06 Javascript
[58:00]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第二场 2月7日
2021/03/11 DOTA
浅谈Python单向链表的实现
2015/12/24 Python
KMP算法精解及其Python版的代码示例
2016/06/01 Python
python密码错误三次锁定(实例讲解)
2017/11/14 Python
PyQt5显示GIF图片的方法
2019/06/17 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
HTML5中的新元素介绍
2008/10/17 HTML / CSS
2014三八妇女节活动总结范文四篇
2014/03/09 职场文书
商业房地产广告语
2014/03/13 职场文书
环保倡议书100字
2014/05/15 职场文书
网球场地租赁协议范本
2014/10/07 职场文书
Golang 1.18 多模块Multi-Module工作区模式的新特性
2022/04/11 Golang