Python中zip函数的用法和使用示例
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函数会以最短的可迭代对象为准,只打包这个可迭代对象中的元素。
