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

Python中zip()函数用法详解,实例演示

发布时间:2023-06-12 07:33:19

Python中的zip()函数用于将多个可迭代对象合并成一个元组列表。

zip()函数接收任意多个参数,每个参数都可以是一个可迭代对象,如列表、元组、字符串等。

使用方法:

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

参数:

iter1:需要合并的可迭代对象。

iter2:需要合并的可迭代对象,可不传。

返回值:

返回一个元组列表,元组中的每个元素都由每个可迭代对象的同一位置上的元素按顺序组成。

实例演示:

# 合并两个列表
a = [1, 2, 3]
b = [4, 5, 6]
c = zip(a, b)
print(list(c))
# [(1, 4), (2, 5), (3, 6)]

# 合并三个列表
d = [7, 8, 9]
e = zip(a, b, d)
print(list(e))
# [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

# 合并两个字符串
f = 'abc'
g = 'def'
h = zip(f, g)
print(list(h))
# [('a', 'd'), ('b', 'e'), ('c', 'f')]

可以看到,zip()函数将要合并的可迭代对象中同一位置的元素按顺序组成了元组,并返回一个元组列表。如果要使用这个列表,需要通过list()函数来将其转换为列表类型。

需要注意的是,当要合并的可迭代对象长度不同时,zip()函数将会忽略长度较长的对象中超出部分的元素。

i = [1, 3]
j = [2, 4, 6]
k = zip(i, j)
print(list(k))
# [(1, 2), (3, 4)]

可以看到,zip()函数忽略了列表j中位置为2的元素6,因为列表i中只有两个元素,它们组成的元组也只有两个元素。

除了使用list()函数将zip()函数的返回值转换为列表类型,还可以直接使用for循环来遍历这个返回值。在遍历的过程中,返回值中的每一个元素都会被解包成多个变量,分别对应每个元组中的元素。

l = [1, 2, 3]
m = [4, 5, 6]
n = ['a', 'b', 'c']
for x, y, z in zip(l, m, n):
    print(x, y, z)
# 1 4 a
# 2 5 b
# 3 6 c

在这个例子中,zip()函数返回的元组列表中的每个元素都包含了三个元素,分别对应列表l、m、n中的同一位置上的元素。在for循环中,这个元素被解包成了三个变量x、y、z,分别对应每个元组中的对应元素,然后被打印出来。

除了将多个可迭代对象合并成一个元组列表之外,zip()函数还常用于将字典的键和值互换。

o = {'a': 1, 'b': 2, 'c': 3}
p = zip(o.values(), o.keys())
q = dict(p)
print(q)
# {1: 'a', 2: 'b', 3: 'c'}

在这个例子中,我们先通过o.values()获取字典o中的所有值,通过o.keys()获取字典o中的所有键,然后使用zip()函数将它们合并成一个元组列表p。最后,将元组列表p转换为字典q,得到的就是将字典o的键和值互换后的结果。