前言:本博文主要讲解Python中zip()、zip(*zipped)、*zip()的用法及区别。

文章目录

  • 一、zip()函数
    • 1.1、语法
    • 1.2、返回值
    • 1.3、实例
  • 二、zip(*zipped)
  • 三、*zip()函数

一、zip()函数

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用*号操作符,可以将元组解压为列表。

zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换;如需展示字典,需手动 dict() 转换。

1.1、语法

zip([iterable, ...])

参数说明:iterable(一个或多个迭代器)

1.2、返回值

  • 返回元祖列表

1.3、实例

# 定义三个列表
a = [1, 2, 3]
b = [4, 5, 6]
c = [4, 5, 6, 7, 8]# 打包为元组的列表,而且元素个数与最短的列表一致
a_b = zip(a, b)
# 输出zip函数的返回对象类型
print("a_b类型%s" % type(a_b))
# 输出a_b
print(a_b)

首先我们定义三个列表,并为a,b列表使用zip()函数,我们简单的看一下结果:



通过上面的运行结果,我们可以看出:zip函数的返回对象类型是一个zip类型,我们直接来输出a_b的结果,返回了这个zip对象在内存中的存储位置。那么下来,我们用list()对其进行一个转换:

print(list(a_b))


可以看出,它返回了由这些元组组成的列表。

注意:zip()函数的返回对象转换成list不是必须的,只是为了方便输出,list输出很直观。

那么下来,我们测试下当迭代器的元素个数不一致时,是如何进行操作的。

a_c = zip(a, c)
print(list(a_c))


通过这个执行结果,我们可以清晰的看到:如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。

二、zip(*zipped)

zip(*zipped)中的 *zipped参数,可以list数组,也可以是zip()函数返回的对象。

# 声明一个列表
nums = [['a1', 'a2', 'a3'], ['b1', 'b2', 'b3']]# 参数为list数组时,是压缩数据,相当于zip()函数
iters = zip(*nums)
# 输出zip(*zipped)函数返回对象的类型
print("type of iters is %s" % type(iters))
# 因为zip(*zipped)函数返回一个zip类型对象,所以我们需要对其进行转换
# 在这里,我们将其转换为字典
print(dict(iters))


注意:该dict()函数可用于将zip对象转换为字典。需要注意的是,只能使用两个zip()参数,前者产生key,后者产生value。

三、*zip()函数

*zip()函数是zip()函数的逆过程,将zip对象变成原先组合前的数据。

# 创建2个列表
m = [1, 2, 3]
n = [4, 5, 6]print("*zip(m, n)返回:", *zip(m, n))
m2, n2 = zip(*zip(m, n))
print("m2和n2的值分别为:", m2, n2)
# 若相等,返回True;说明*zip为zip的逆过程
print(m == list(m2) and n == list(n2))

Python中zip()、zip(*zipped)、*zip()函数总结相关推荐

  1. python一行输出多个数据_如何在Python中让两个print()函数的输出打印在一行内?

    1.两个连续的print()函数为什么在输出时内容会分行显示? 解:print()中有两个默认参数sep和end,其中sep是代替分隔符,end是代替末尾的换行符,默认使用','代替空格,且默认末尾加 ...

  2. python中实现延时回调普通函数示例代码

    这篇文章主要给大家介绍了关于python中实现延时回调普通函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧. 回调函 ...

  3. Python中常用的高阶函数

    Python 中常用的高阶函数 ① filter(function,iterable)filter(function, iterable)filter(function,iterable)   过滤器 ...

  4. Python中的startswith和endswith函数使用实例

    Python中的startswith和endswith函数使用实例 在Python中有两个函数分别是startswith()函数与endswith()函数,功能都十分相似,startswith()函数 ...

  5. python整数转换字符串_使用Python中的str()函数将整数值转换为字符串

    python整数转换字符串 Given an integer value and we have to convert the value to the string using str() func ...

  6. Python中常用最神秘的函数! lambda 函数深度总结!

    今天我们来学习 Python 中的 lambda 函数,并探讨使用它的优点和局限性 Let's do it! 什么是 Python 中的 Lambda 函数 lambda 函数是一个匿名函数(即,没有 ...

  7. python一个函数调用另一个函数中的变量_在Python 中同一个类两个函数间变量的调用方法...

    在Python 中同一个类两个函数间变量的调用方法 更新时间:2019年01月31日 15:44:54 作者:wxy_summer 今天小编就为大家分享一篇在Python 中同一个类两个函数间变量的调 ...

  8. python中hex,oct,chr,ord函数讲解

    问题描述:遇到一段python代码,不知道是什么意思 for char in content:hexes.append(hex(ord(char))) 代码的讲解如下:  将字符串中的每个自负转化为整 ...

  9. Python中缺失值删除 pd.dropna()函数

    [小白从小学Python.C.Java] [Python全国计算机等级考试] [Python数据分析考试必会题] ● 标题与摘要 Python中缺失值删除 pd.dropna()函数 ● 选择题 以下 ...

  10. Python中numpy.linalg库常用函数

    Python中numpy.linalg库常用函数 numpy.linalg Python中numpy.linalg库常用函数 简单记录所遇到的numpy库内置函数 矩阵与向量积 ①np.linalg. ...

最新文章

  1. 简单的5*5,五子棋小游戏
  2. NetStream.appendBytes, 走向Flash P2P VOD的第一步
  3. 运行mysql时,提示Table ‘performance_schema.session_variables’ doesn’t exist
  4. AIR 中 File 对象的几个系统文件夹及其属性.
  5. python列表元组字符串都属于有序数列_列表、元组、字符串是Python的__________(有序、无序?)序列。...
  6. 信用卡逾期记录已经超过5年,为何还不能申请贷款?
  7. linux用rsync实现同步,Linux下使用rsync实现主备机代码同步
  8. 搞定使用MySQL导入外部的SQL文件执行
  9. C++——判身份证号码真伪
  10. 数字电路逻辑设计之逻辑函数
  11. java解指派问题,运用Excel规划求解解决指派问题
  12. android system.img userdata.img文件解包打包及设置
  13. 自动驾驶轨迹规划--算法综述
  14. 安卓逆向-new-sec6-5 平头哥框架hook简介 | 类加载器 | 内部类
  15. android如何基于父布局,如何根据父视图的尺寸调整Android视图的大小
  16. Cordova中第三方UI插件的使用(2)--Topcoat
  17. mysql事件示例_卓象程序员:Mysql数据库事件使用与示例
  18. 期货:移动平均线(MA)技术指标图形
  19. GBase 8a 数据迁移工具4--- Oracle数据迁移工具“orato8a”
  20. 李彦宏造神路线揭秘:23万粉丝超越马云李开复

热门文章

  1. Python基础练习题(按条件对指定序列求和,打印99乘法表、求斐波那契数列、百马百担、求水仙花数、求n以内的所有质数(素数)和)
  2. 程序员如何成长?如何进阶?——一个老程序员的经验分享2
  3. 上海交通大学能源动力(核能与核技术工程)考研上岸前辈备考经验
  4. 基于JSP的教务管理系统设计
  5. unable to get repr for class 'torch.tensor'
  6. ClickHouse-入门及Linux单机安装
  7. 安卓高通机型的基带移植 修改 编译的相关 增加信号 支持5G等【二】
  8. 大神都已经在用python爬取高德地图了
  9. 中望3D 2021导出剖面线为单根线段
  10. 扬声器测试专业软件,AudioTester