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