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

Python中如何使用zip函数?(附加参数详解)

发布时间:2023-06-22 17:21:50

Python中的zip函数是用于将两个或多个可迭代对象进行压缩,生成一个由所有可迭代对象中相同位置元素组成的元组构成的新可迭代对象。

zip函数的基本语法如下:

zip(*iterables)

其中,参数iterables可以是一个或多个可迭代对象(例如列表、元组、字符串等)。

下面我们以一些例子来说明zip函数的使用方式和常见附加参数的含义。

1. 简单使用:

假设有两个列表a和b,其中a=[1, 2, 3],b=[4, 5, 6],可以使用zip函数将其压缩为一个新的可迭代对象,代码如下:

a = [1, 2, 3]
b = [4, 5, 6]
c = zip(a, b)
print(list(c))

输出结果:

[(1, 4), (2, 5), (3, 6)]

2. 不定长度的可迭代对象:

zip函数接受多个可迭代对象作为参数,而这些可迭代对象的长度可以不同,代码如下:

a = [1, 2, 3]
b = [4, 5]
c = [6]
d = zip(a, b, c)
print(list(d))

输出结果:

[(1, 4, 6)]

由于b和c的长度不够,结果只有一个元素。

3. 以最短的长度为准:

当zip函数接受的可迭代对象长度不同时,它会以最短的可迭代对象的长度为准,代码如下:

a = [1, 2, 3]
b = [4, 5]
c = zip(a, b)
print(list(c))

输出结果:

[(1, 4), (2, 5)]

4. zip对象:

zip函数返回的是一个zip对象,它是一个迭代器,可以使用for循环进行遍历,代码如下:

a = [1, 2, 3]
b = [4, 5, 6]
c = zip(a, b)
for item in c:
    print(item)

输出结果:

(1, 4)
(2, 5)
(3, 6)

5. 解压缩:

通过zip函数压缩后的序列也可以通过zip进行解压缩,代码如下:

a = [1, 2, 3]
b = [4, 5, 6]
c = zip(a, b)
d, e = zip(*c)
print(d)
print(e)

输出结果:

(1, 2, 3)
(4, 5, 6)

这里的*d和*e表示解压缩后得到两个新的元组,即原来的a和b。

6. 附加参数:

zip函数还有一些常见的附加参数:

(1)fillvalue

当可迭代对象的长度不同时,使用fillvalue可以指定填充值,代码如下:

a = [1, 2, 3]
b = [4, 5]
c = zip_longest(a, b, fillvalue=0)
print(list(c))

输出结果:

[(1, 4), (2, 5), (3, 0)]

fillvalue即为填充值,当b的长度不够时,填充默认为0。

(2)key

在对可迭代对象进行压缩时,可以使用key参数进行排序,代码如下:

a = [1, 3, 2]
b = [4, 6, 5]
c = zip(a, b)
d = sorted(c, key=lambda x:x[0])
print(list(d))

输出结果:

[(1, 4), (2, 5), (3, 6)]

这里的lambda函数表示以 个元素为关键字进行排序,也就是根据a列表中元素的大小进行排序。

总结:

zip函数在Python中是一个非常实用的函数,可以将多个可迭代对象进行压缩,生成一个新的可迭代对象。此外,它还有一些常见的附加参数,可以满足不同的需求,使用zip函数可以大大简化代码,提高代码的可读性和效率。