Python函数之zip函数的介绍与实际应用
作者:Amo?Xiang 发布时间:2022-06-02 00:52:51
1. zip() 函数的介绍
1.1 功能
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的 zip 对象。
1.2 语法
zip(*iterables) --> zip object
参数说明:
(1) iterables:可迭代对象,如列表、字典、元组、字符串等,zip() 函数允许多个可迭代对象作为参数。
(2) 当 zip() 函数没有参数时,则返回空的迭代器。
(3) 当 zip() 函数只有一个参数时,则从参数中依次取一个元素组成一个元组,再将依次组成的元组组合成一个新的迭代器。
(4) 当 zip() 函数有两个参数时,分别从两个参数中依次各取出一个元素组成元组,再将依次组成的元组组合成一个新的迭代器。
(5) 返回值:返回一个可迭代的 zip 对象,其内部元素为元组,可以使用 list() 函数 或 tuple() 函数将其转换为列表或元组。
2. zip() 函数的应用
2.1 用 zip() 函数实现列表合并
下面使用 zip() 函数实现将两个列表进行合并。例如,将 name_list、age_list 两个列表合并,代码如下:
name_list = ["Amo", "Paul", "Jason", "Seven"]
age_list = [18, 19, 20, 21]
# 输出 ==> [('Amo', 18), ('Paul', 19), ('Jason', 20), ('Seven', 21)]
print(list(zip(name_list, age_list)))
2.2 使用 zip() 函数建立字典
有两个列表 name_list 和 score_list,其中 name_list 中存储着学生姓名,score_list 存储着每个学生的考试成绩,如果要通过某个学生姓名来查找其考试成绩,则需要一个字典,zip() 函数可以很方便地建立字典,代码如下:
name_list = ["Amo", "Paul", "Jason", "Seven"] # 定义列表name_list
score_list = [80, 96, 77, 88] # 定义成绩
my_dict = dict(zip(name_list, score_list)) # 使用dict()函数将zip对象转换为字典
print(my_dict["Amo"]) # 输出 80
2.3 zip() 函数妙用 1— 矩阵的旋转
矩阵是高等数学中的常见工具,也常用于统计分析和数学应用中。下面使用 zip() 函数实现一个 xyz 的矩阵的旋转,代码如下:
x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
xyz = list(zip(x, y, z))
print(xyz) # 输出 ==> [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
2.4 zip() 函数妙用 2— 矩阵的行列转置
矩阵的转置是矩阵的一种运算,在矩阵的所有运算法则中占有重要地位。例如,把矩阵 A 的行和列互相交换所产生的的矩阵称为 A 的转置矩阵,这一过程称为矩阵的转置。下面实现将 xyz 矩阵进行转置,代码如下:
x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
xyz = list(zip(x, y, z))
print(xyz)
for a, b, c in zip(x, y, z):
print(f"{a},{b},{c}")
2.5 zip() 函数妙用 3— 将 4×3 矩阵转置成 3×4 矩阵
data1 = ((0, 1, 2), (3, 4, 5), (6, 7, 8), (9, 10, 11))
data2 = zip(*data1)
print(type(data2)) # <class 'zip'>
print(tuple(data2)) # 输出 ==> ((0, 3, 6, 9), (1, 4, 7, 10), (2, 5, 8, 11))
2.6 通过序列的解压执行 zip() 函数的反操作
在某些情况下,我们需要执行相反的操作 — 解压序列。解压操作涉及将压缩后的元素恢复为其原始状态。可以添加 * 运算符到函数调用中。代码如下:
a = (1, 2, 3)
b = (10, 20, 30)
L = list(zip(a, b))
print(f"obj = {L}")
c, d = list(zip(*L)) # 使用*解压序列
print(f"c = {c} \nd = {d}")
if a == c and b == d:
print("两次 zip() 等于啥都没干......")
2.7 输出字典中值最大所对应的键
在一个字典当中,求值最大所对应的键时,zip() 函数就派上了大用场。代码如下:
data = {"张三": 100, "李四": 20, "王五": 500, "赵六": 12}
obj = zip(data.values(), data.keys())
# 输出:分数最高的学生姓名为: 王五
print(f"分数最高的学生姓名为: {max(obj)[1]}")
附:*zip( )
*zip()函数是zip()函数的逆过程,将zip对象变成原先组合前的数据。
a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9, 10, 11]
print(*zip(a, b))
来源:https://blog.csdn.net/xw1680/article/details/110948264
猜你喜欢
- 本文实例讲述了Django框架ORM数据库操作。分享给大家供大家参考,具体如下:测试数据:BookInfo表PeopleInfo表一.增加1
- 用到这个的业务场景是这样的:a页面点击新建列表按钮进入到新建的页面b,填写b页面并点击b页面确认添加按钮,把这些数据带到a页面,填充到列表(
- 介绍init 方法通常用在初始化一个类实例时候,但其实它不是实例化一个类的时候第一个被调用 的方法。当使用 Student(id, name
- 废话不多说,直接上代码<?php // 暂不支持断点续传 // $url = 'http://www.
- Python 如何转换string到float?简单几步,让你轻松解决。打开软件,新建python项目,如图所示右键菜单中创建.py文件,如
- 每次安装总是有些不同,这次用这种方式尝试一下,也记录一下。1、首先需要去下载rpm包:镜像地址:http://mysql.mirrors.p
- 将通过各种例子来了解如何在 Python 中使用 type() 函数。你好类型打印 "Hello World "几乎是你
- 一、学习目标:学会利用python的GUI做界面布局手写计算器代码熟悉控件的使用方法优化计算器代码,解决 获取按钮文本 的方法了解lambd
- 本文实例讲述了Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法。分享给大家供大家参考,具体
- Python list列表添加元素方法实际开发中,经常需要对 Python 列表进行更新,包括向列表中添加元素、修改表中元素以及删除元素。&
- 本文实例讲述了php遍历CSV类。分享给大家供大家参考。具体如下:<?phpclass CSVIterator implements
- 什么是作用域程序的执行,离不开作用域,也必须在作用域中才能将代码正确的执行。所以作用域到底是什么,通俗的说,可以这样理解:作用域就是定义变量
- 本文实例讲述了python获取一组数据里最大值max函数用法。分享给大家供大家参考。具体如下:# 最简单的max(1, 2)max('
- 目录socket概念socket基本用法创建tcp套接字创建udp套接字socket内建方法实现端口扫描总结socket概念socket又称
- 关于段落<p></p>相信大家已经都在自己的工作中开始关注并应用了。因为那真的是非常简单的事,只要你愿意你随时都可以
- 我正在用 MySQL 客户端的时候,突然想到如果可以给查询结果添加排名该多好啊,然后就找到了一个简单的解决办法。下面是一个示例表
- Msg 102, Level 15, State 1, Line 3 Incorrect syntax near '+'.
- webpack我自己还在摸索学习中,今天给大家分享个用webpack把我们的业务模块分开打包的方法,顺便留个笔记 如何用webpa
- "^/d+$" //非负整数(正整数 + 0)"^[0-9]*[1-9][0-9]*$" //正整数
- 数据准备: 需要准备两个stl文件、Python需要安装vtk库步骤一:数据读取 首先通过vtk.vtkSTLReade