python zip函数可以实现同时遍历多列表,以及矩阵转置等

liftword1个月前 (04-11)技术文章25

zip 函数是Python的内置函数,用于将多个可迭代对象中对应位置的元素打包成元组,并返回一个由这些元组组成的迭代器。

概念看不懂没关系,我们来举个简单例子。

比如有两个列表x=["a","b","c","d","e"],y=[1,2,3,4,5]。 这两个列表中的元素是对应关系。如果我们要把这种对应关系输出,要怎么做呢?

传统做法是:

for i in range(len(x)):

print(x[i],y[i])

我们再来看看用zip怎么实现。代码写成:

for a,b in zip(x,y):

print(a,b)

这样就可以了。 这里zip把x和y列表对应位置的元素打包成了元组,也就是(a,2), (b,3)这样的形式。


通过这个例子,大家应该可以理解zip是干嘛用的了。那zip有哪些特点呢?

第一, zip的参数可以是任意的可迭代对象。比如列表,元组,字符串等等都是可以的。比如我们把x改成字符串,也没什么问题。

第二, zip可以操作任意数量的参数。比如我们再增加一个z字符串,也加入到zip里,打印结果里也包含了z的字符。


第三, 当输入的可迭代对象长度不一致时, zip 函数默认以最短的可迭代对象的长度为准,忽略其他对象超出的部分。

第四, zip函数返回的是一个迭代器,只能遍历一次。比如我们把zip提出来,然后再加一个循环,后面的循环是没有任何输出的。如果需要多次使用,需要先转换为列表或元组等序列类型。比如用list把zip转成列表,这样后面的循环就有输出了。

要注意,如果只需遍历一次,那不建议转成列表,因为列表会一次性存储所有打包后的元组,在处理大的迭代对象时,可能会占用大量内存。


zip一般用在哪些地方呢?常见应用场景比如:

- 同时遍历多个列表:我们前面这个例子,就是同时遍历了多个列表。


配合星号,把多维元组或列表反向“解压”成两个元组。前面的例子里m是个列表,为方便大家理解,我直接把输出复制过来赋值给x。再用zip星号来解压,用list转成列表,输出看下。其实这也就是实现了矩阵的转置。了解矩阵的朋友可以对比一下前后矩阵。


- 创建字典:将两个列表合并为键值对的字典,比如这里,用dict函数把x,y组合成字典。

关于zip函数的介绍就到这里,大家赶紧动手操作试下吧。

相关文章

矩阵的转置

有关矩阵的讲解,在之前我已经提过了,矩阵是一个数表,大家一定要记清楚!下面我们来说一说矩阵的转置,首先来了解一下定义:定义:把一个m×n矩阵A的行换成同序数的列而得到的n×m矩阵,称为矩阵A的转置矩阵...

4.NumPy数组操作

4.NumPy数组操作4.1改变NumPy数组维度前面已经学习了怎样使用reshape函数,接下来我们来学习展开数组ravelravel函数完成展平数组的操作。import numpy as npb...

Python中zip()函数详解:合并、解压与高效数据处理

在Python中,zip() 是一个非常实用的内置函数,用于将多个可迭代对象(如列表、元组、字符串等)合并成一个元组的列表。它通过将输入的每个可迭代对象的元素按位置配对,生成一个迭代器,其中每个元素是...

C++矩阵求转置矩阵

n阶矩阵求转置,也就是沿着左对角线反转矩阵;a[i][j] 与 a[j][i] 对换。算法实现:n * m矩阵的转置,行和列颠倒。算法实现:最后,如果你想学C/C++可以私信小编“01”获取素材资料以...

标量、向量、矩阵、张量之间的区别和联系

前言深度学习的表现之所以能够超过传统的机器学习算法离不开神经网络,然而神经网络最基本的数据结构就是向量和矩阵,神经网络的输入是向量,然后通过每个矩阵对向量进行线性变换,再经过激活函数的非线性变换,通过...

Python高手都在用的10个效率翻倍技巧,代码越短越优雅!

Python以简洁优雅著称,但很多开发者却因不熟悉高级技巧而陷入“重复造轮子”的困境。本文精选10个实战级代码优化技巧,结合企业级案例和性能对比,助你写出更专业的Python代码!一、字符串处理:一行...