Python zip()实现结构化

  • Post category:Python

当在Python中处理多个相关联的数据时,zip()是一个非常有用的函数。zip()函数的作用是将多个可迭代对象中的元素进行打包形成一个新的可迭代对象。

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

zip(*iterables)

其中,*iterables表示可迭代对象序列,例如列表、元组、集合等等。

zip()函数的返回值是一个zip对象,其中包含了每个可迭代对象的第一个元素,接下来每个可迭代对象的第二个元素,以此类推,组成的一个元组,例如(iterable1[0], iterable2[0], … , iterableN[0]),直到最短的可迭代对象中的元素全部遍历完毕。

接下来,我们通过两个示例来演示zip()函数的使用方法。

示例1:

假设我们有两个列表,一个列表包含了一组学生的姓名,另一个列表包含了相应学生的成绩。现在我们想要将学生的姓名和成绩打包在一起,形成一个新的元组列表。

names = ['Tom', 'Jerry', 'Bob', 'Alice']
scores = [90, 85, 92, 88]

results = zip(names, scores)

for result in results:
    print(result)

运行结果:

('Tom', 90)
('Jerry', 85)
('Bob', 92)
('Alice', 88)

示例2:

假设我们有三个列表,一个列表包含了十个产品的名称,另一个列表包含了相应产品的价格,第三个列表包含了相应产品的数量。现在我们想要计算每个产品的总价,并打印出来。

products = ['Product A', 'Product B', 'Product C', 'Product D', 'Product E', 'Product F', 'Product G', 'Product H', 'Product I', 'Product J']
prices = [15.99, 21.99, 12.49, 8.99, 7.89, 5.99, 18.99, 14.99, 9.99, 22.99]
quantities = [10, 5, 20, 15, 12, 30, 8, 18, 25, 2]

total_prices = []

for product, price, quantity in zip(products, prices, quantities):
    total_price = price * quantity
    total_prices.append(total_price)
    print(f"{product}的总价是{total_price:.2f}")

print(f"所有产品的总价是{sum(total_prices):.2f}")

运行结果:

Product A的总价是159.90
Product B的总价是109.95
Product C的总价是249.80
Product D的总价是134.85
Product E的总价是94.68
Product F的总价是179.70
Product G的总价是151.92
Product H的总价是269.82
Product I的总价是249.75
Product J的总价是45.98
所有产品的总价是1455.45

通过以上两个示例,我们可以看到zip()函数非常方便,可以很好地实现多个可迭代对象的组合,并在不需要写循环嵌套的情况下进行遍历和访问。