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

Python中的zip函数:使用及示例

发布时间:2023-06-22 10:27:29

Python的内置函数zip()给予多个列表,同时迭代这些列表中的元素,生成一个新的可迭代对象,其中的元素是每个列表中相同位置的元素共同组成的元组(tuple)。zip()函数常用于同时循环多个列表,对它们进行操作,如加法运算、拼接等。下面是zip()函数的使用及示例。

使用方法:

zip()函数的基本语法如下:

zip(*iterables)

其中*iterables表示可迭代对象,可以是多个序列,如列表、元组、字典等。zip()函数返回一个可迭代对象,其中的元素是每个序列中相同位置的元素组成的元组。如果输入序列的长度不同,那么zip()函数将以最短的序列长度为准。

示例:

假设有3个列表分别表示小明、小红和小李的成绩,如下:

score_ming = [80, 90, 95]

score_hong = [85, 92, 90]

score_li = [90, 88, 92]

现在要计算这3个人的平均成绩,可以使用zip()函数同时遍历这3个列表,对应位置的元素共同组成一个元组:

for x in zip(score_ming, score_hong, score_li):

    print(x)

输出结果:

(80, 85, 90)

(90, 92, 88)

(95, 90, 92)

可以看到,每个元素都是一个由3个成绩组成的元组。

接下来,可以对这些元组进行加法运算,计算每位同学的总成绩:

total_score = [sum(x) for x in zip(score_ming, score_hong, score_li)]

其中,sum()函数用于计算序列中元素的总和。输出结果:

[255, 270, 275]

最后,可以求每位同学的平均成绩:

avg_score = [x/3 for x in total_score]

输出结果:

[85.0, 90.0, 91.66666666666667]

另外,如果输入的是字典,则zip()函数默认遍历的是字典的键(key)。例如,将上述3个同学的成绩以字典的形式存储:

scores = {'ming': [80, 90, 95], 'hong': [85, 92, 90], 'li': [90, 88, 92]}

可以直接使用zip()函数遍历字典:

for key, value in zip(scores.keys(), scores.values()):

    print(key, value)

输出结果:

ming [80, 90, 95]

hong [85, 92, 90]

li [90, 88, 92]

需要注意的是,Python 3中的zip()函数返回的是一个迭代器,需要使用list()函数将其转换为列表,才能进行操作。例如,将上述3个同学的成绩以元组的形式存储:

scores = [(80, 85, 90), (90, 92, 88), (95, 90, 92)]

可以直接将其转换为列表,再进行操作:

total_score = [sum(x) for x in list(zip(*scores))]

avg_score = [x/3 for x in total_score]

输出结果与之前相同。

总结:

zip()函数是Python中一种常用的迭代器,具有便捷的多序列遍历、多序列操作等功能。可适用于各种数据结构,包括列表、元组、字典等。在需要对多个序列进行协同操作的情况下,zip()函数将是一个非常实用的工具。