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

Python中zip()函数的用法详解以及实例

发布时间:2023-06-17 01:34:18

zip()函数是Python内置的一个用于配对多个序列的函数,它把两个或多个序列中相同位置的元素配对成一个元组,然后返回一个对象。这个对象可以作为一个迭代器,可以使用方法__next__()返回每个元素对的tuple。zip()的参数可以是任意多个序列,可以是列表、元组等任何序列类型。

语法

zip(*iterables)

参数

iterables:可迭代对象。

返回值

返回一个元组tuple对象,其中每个元组由原始数据集中相同位置的元素组成。返回的对象也是一个迭代器,可以使用方法__next__()或next()获取每个元素对的tuple,如果一个迭代器长度指定了其他参数的长度,则返回的迭代器将抛出 Stop Iteration 异常。

使用方法

zip()函数可以用来同时遍历多个序列,这时要配合for循环使用,比如:

a = [1, 2, 3]
b = ['a', 'b', 'c']
for x, y in zip(a, b):
  print(x, y)

输出结果为:

1 a
2 b
3 c

也可以使用list()函数将zip()的结果转换为列表:

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

输出结果为:

[(1, 'a'), (2, 'b'), (3, 'c')]

实例

下面给出几个zip()函数的实例。

实例一:合并两个列表

将两个长度相同的列表合并成一个列表:

x = [1, 2, 3]
y = ['a', 'b', 'c']
z = list(zip(x, y))
print(z)

输出结果为:

[(1, 'a'), (2, 'b'), (3, 'c')]

实例二:交换字典的键和值

假设有一个字典,需要将其键和值交换:

d = {'a': 1, 'b': 2, 'c': 3}
# 将键和值交换
d1 = dict(zip(d.values(), d.keys()))
print(d1)

输出结果为:

{1: 'a', 2: 'b', 3: 'c'}

实例三:计算每个学生的平均分

假设有两个列表,一个保存学生姓名,一个保存学生的分数,现在需要计算每个学生的平均分数:

names = ['A', 'B', 'C']
scores = [[90, 80, 70], [80, 70, 60], [70, 60, 50]]
result = list(zip(names, scores))
# 求每个学生的平均分
avg_scores = []
for name, score in result:
    avg_score = sum(score) / len(score)
    avg_scores.append((name, avg_score))
print(avg_scores)

输出结果为:

[('A', 80.0), ('B', 70.0), ('C', 60.0)]

总结

zip()函数是Python提供的一个非常实用的函数,它可以方便地对多个序列进行操作,常用来合并两个或多个序列、交换字典的键值、计算每个学生的平均分等。在实际开发中,需要注意的是要确保所传入的序列长度相等,否则可能会产生错误。