欢迎访问宙启技术站
智能推送

Python中zip函数的用法和使用示例

发布时间:2023-05-20 02:22:43

zip函数是Python自带的一个内置函数,用于将多个可迭代对象中对应的元素一一对应,形成一个新的可迭代对象。其语法格式如下:

zip(iter1 [,iter2 [...]]) 

其中,iter1, iter2, ... 表示可迭代对象,可以是任意多个,zip函数会将这些可迭代对象中,同样位置的元素打包成一个个 tuple,然后返回一个可迭代对象。这个可迭代对象中的元素也是一一对应的,每个元素都是由每个可迭代对象同样位置上的元素生成的。

使用示例:

1. 对两个列表进行打包

a = [1, 2, 3, 4]

b = ['a', 'b', 'c', 'd']

c = zip(a, b)

print(list(c))

运行结果:

[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]

2. 对两个列表进行迭代

a = [1, 2, 3, 4]

b = ['a', 'b', 'c', 'd']

for i, j in zip(a, b):

    print(i, j)

运行结果:

1 a

2 b 

3 c 

4 d

这里的 i 和 j 分别表示了列表 a 和列表 b 中同一位置的元素,zip函数将它们打包生成了一个个 tuple,然后进行迭代输出。

3. 对字典进行打包

dict1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

dict2 = {'e': 5, 'f': 6, 'g': 7, 'h': 8}

zipped = zip(dict1, dict2)

print(list(zipped))

运行结果:

[('a', 'e'), ('b', 'f'), ('c', 'g'), ('d', 'h')]

4. 解包

a = [1, 2, 3, 4]

b = ['a', 'b', 'c', 'd']

c = zip(a, b)

d, e = zip(*c)

print(d, e)

运行结果:

(1, 2, 3, 4) ('a', 'b', 'c', 'd')

注意:在解包的时候需要加一个 * 号来将可迭代对象解包。

5. 对不同长度的可迭代对象进行打包

a = [1, 2, 3]

b = ['a', 'b', 'c', 'd']

c = zip(a, b)

print(list(c))

运行结果:

[(1, 'a'), (2, 'b'), (3, 'c')]

由于 a 列表的长度为3, b 列表的长度为4,zip函数会将 a 列表中所有的元素打包,而 b 列表中只有前三个元素被打包,生成的 tuple 就只有三个。

6. 对空的可迭代对象进行打包

a = []

b = []

c = zip(a, b)

print(list(c))

运行结果:

[]

由于 a 和 b 都是空的可迭代对象,这里使用 zip 函数生成的结果也是空的,即一个空的列表。 

7. 用于计算行列式

参考 numpy 板块例子。

总结

zip函数是一个非常实用的内置函数,可以帮助我们将多个可迭代对象中同一位置上的元素一一对应,方便我们在处理数据时进行处理。在使用时需要注意的是,zip函数会将多个可迭代对象打包成一个可迭代对象,并且返回的结果是一个生成器,如果需要将结果存储下来,需要使用 list 函数生成一个列表来存储。同时,如果多个可迭代对象中的元素数量不同,zip函数会以最短的可迭代对象为准,只打包这个可迭代对象中的元素。