Python中zip函数的用法及实例演示
Python是一门非常流行的编程语言,有着丰富的内置函数和标准库。其中,zip() 函数是一个非常实用的函数,它可以将多个可迭代对象打包成一个元组,并返回一个可迭代的zip对象。本文将探讨zip函数的用法及实例演示。
1. zip函数的用法
zip函数的语法格式如下:
zip(iterable1, iterable2, iterable3, ...)
其中,iterable1, iterable2, iterable3...为可迭代对象,即可以被 for 循环遍历的对象,如列表、元组、字典、集合、字符串等。
zip函数的返回值是一个zip对象,它内部包含着一组元组,每个元组包含了来自各个可迭代对象的构成元素,如下所示:
zip_obj = zip(iterable1, iterable2, iterable3, ...)
for item in zip_obj:
print(item) # (iterable1[0], iterable2[0], iterable3[0]), (iterable1[1], iterable2[1], iterable3[1]), ...
需要注意的是,zip函数只会返回元素最少的可迭代对象中包含的项数,而且zip对象只能被迭代一次,一旦遍历结束,就不能再次遍历了。
2. 实例演示
接下来,让我们通过几个实例演示,来更深入地理解zip函数的用法。
2.1 zip函数的基本用法
我们先看一下zip函数的基本用法。我们定义两个列表,分别为names和scores,然后用zip函数将它们打包成一个新的zip对象,最后通过for循环遍历这个zip对象,输出每个元组。
names = ['Tom', 'Jerry', 'Mickey']
scores = [90, 85, 92]
zip_obj = zip(names, scores)
for item in zip_obj:
print(item)
输出结果如下:
('Tom', 90)
('Jerry', 85)
('Mickey', 92)
2.2 zip函数的扩展用法
除了上面的基本用法,zip函数还有一些扩展用法。下面我们分别介绍一下这些用法的实现方法。
2.2.1 两个列表的对应元素相乘
我们定义两个列表a和b,含有5个数值型元素,然后通过zip函数将它们打包成一个新的zip对象。接着,再用列表推导式对每个元组进行处理,将两个列表的对应元素相乘,生成新的列表c。
a = [1, 2, 3, 4, 5] b = [10, 20, 30, 40, 50] c = [x * y for x, y in zip(a, b)] print(c)
输出结果如下:
[10, 40, 90, 160, 250]
2.2.2 将两个列表作为字典的键值对
我们定义两个列表keys和values,分别含有3个字符串型元素。然后通过zip函数将它们打包成一个新的zip对象。接着,我们将这个zip对象转换成字典,其中 个列表作为字典的键,第二个列表作为字典的值。
keys = ['name', 'age', 'gender'] values = ['Tom', '20', 'male'] dict_obj = dict(zip(keys, values)) print(dict_obj)
输出结果如下:
{'name': 'Tom', 'age': '20', 'gender': 'male'}
2.2.3 按列读取CSV文件
我们定义一个变量filename,该变量存放CSV文件的路径。CSV文件的结构如下:
name,score,age Tom,90,20 Jerry,85,21 Mickey,92,19
我们通过open函数打开CSV文件,并用zip函数对它进行处理。zip函数返回的是一个可迭代的zip对象,我们可以对它进行遍历。在每轮遍历中,我们需要将每个元组中的三个元素分别赋值给name、score、age三个变量,并将它们输出到控制台。
filename = 'data.csv'
with open(filename, 'r') as f:
csv_data = f.readlines()
# 抽取表头
header = csv_data[0].strip().split(',')
# 抽取数据
rows = [row.strip().split(',') for row in csv_data[1:]]
# 转置数据
cols = [list(x) for x in zip(*rows)]
# 输出数据
for i, col in enumerate(cols):
print(header[i] + ':')
for j, value in enumerate(col):
print('\t' + rows[j][i].ljust(10), end='')
print('
')
输出结果如下:
name: Tom Jerry Mickey score: 90 85 92 age: 20 21 19
3. 总结
本文介绍了Python中zip函数的用法及实例演示,总结一下,zip函数的功能非常强大,它可以将多个可迭代对象打包成一个元组,并返回一个可迭代的zip对象。zip函数能够有效地提高代码的复用性和可读性,对于一些数据处理任务,它是非常实用的工具之一。
