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

Python函数之zip():用于将多个列表或元组的对应元素打包成一个元组。

发布时间:2023-06-03 11:24:44

Python中的zip()函数是一种非常实用的函数,用于将多个列表或元组的对应元素打包成一个元组。zip()函数可以用来对列表或元组进行压缩,将两个或多个列表中的元素一一对应打包成一个新列表。

zip()本身是一个内置的Python函数,同时也是一个迭代器。在使用时,我们可以传入任意多个列表或元组作为参数,函数将返回一个由元组组成的迭代器,其中每个元组都包含来自输入列表或元组的对应元素。zip()函数可以处理不等长的列表或元组,如果有一个列表或元组中的元素比其他列表或元组短,则zip()函数将停止压缩。

下面我们来看一下zip()函数的语法:

zip(*iterables)

其中,*iterables代表可变参数,可以是两个或多个列表或元组。

注意:在Python2中,zip()函数返回的是一个列表,而在Python3中,zip()返回的是一个迭代器对象,如果想要获取zip()返回的列表,需要使用list()函数将其转换成列表。

接下来,我们通过一些例子来了解zip()函数的使用。

例1:对两个列表进行压缩

我们有两个列表,一个是学生名字列表,另一个是学生的分数列表,现在我们要将这两个列表进行压缩,生成一个新的元组列表,其中每个元组对应一个学生和他的分数。

代码如下:

# 定义两个列表,包含学生名字和分数
names = ["Alice", "Bob", "Charlie", "David"]
scores = [90, 80, 70, 60]

# 使用zip()函数将两个列表压缩成一个元组列表
result = zip(names, scores)

# 遍历输出元组列表中的每个元组,即每个学生和他的分数
for item in result:
    print(item)

输出结果如下:

('Alice', 90)
('Bob', 80)
('Charlie', 70)
('David', 60)

例2:对三个列表进行压缩

我们有三个列表,分别是学生名字列表、学生的英语成绩列表和学生的数学成绩列表,现在我们要将这三个列表进行压缩,生成一个新的元组列表,其中每个元组对应一个学生、他的英语成绩和数学成绩。

代码如下:

# 定义三个列表,包含学生名字、英语成绩和数学成绩
names = ["Alice", "Bob", "Charlie", "David"]
english_scores = [90, 80, 70, 60]
math_scores = [85, 75, 65, 55]

# 使用zip()函数将三个列表压缩成一个元组列表
result = zip(names, english_scores, math_scores)

# 遍历输出元组列表中的每个元组,即每个学生、他的英语成绩和数学成绩
for item in result:
    print(item)

输出结果如下:

('Alice', 90, 85)
('Bob', 80, 75)
('Charlie', 70, 65)
('David', 60, 55)

例3:对元组进行压缩

我们也可以使用zip()函数来对元组进行压缩,原理与对列表进行压缩类似。下面是一个简单的例子,我们有两个元组,一个是学生名字和学生的分数,另一个是学生的等级和学生的班级,现在我们要将这两个元组压缩成一个新的元组列表。

代码如下:

# 定义两个元组,包含学生名字、分数、等级和班级
tuple1 = ("Alice", 90)
tuple2 = ("A", "10")

# 使用zip()函数将两个元组压缩成一个元组列表
result = zip(tuple1, tuple2)

# 遍历输出元组列表中的每个元组,即每个学生的名字、分数、等级和班级
for item in result:
    print(item)

输出结果如下:

(('Alice', 90), ('A', '10'))

例4:处理不等长的列表

zip()函数还可以处理不等长的列表或元组,如果有一个列表或元组中的元素比其他列表或元组短,则zip()函数将停止压缩。

代码如下:

# 定义两个列表,分别包含学生名字和学生的分数
names = ["Alice", "Bob", "Charlie"]
scores = [90, 80, 70, 60]

# 使用zip()函数将两个列表压缩成一个元组列表
result = zip(names, scores)

# 遍历输出元组列表中的每个元组,即每个学生和他的分数
for item in result:
    print(item)

输出结果如下:

('Alice', 90)
('Bob', 80)
('Charlie', 70)

在这个例子中,scores列表中有四个元素,而names列表中只有三个元素,zip()函数只压缩了三个元素,剩余的一个元素被忽略掉了。

总结:Python中的zip()函数是一个非常实用的函数,可以方便地进行多个列表或元组的压缩。zip()函数返回的是一个迭代器对象,如果想要获取zip()返回的列表,需要使用list()函数将其转换成列表。zip()函数可以处理不等长的列表或元组,如果有一个列表或元组中的元素比其他列表或元组短,则zip()函数将停止压缩。