c语言编程笔录

首页 >   > 笔记大全

笔记大全

Python3中怎么向zip函数传递参数

更新时间:2023-11-22

介绍

在Python 3中,zip()函数用于将可迭代的对象转换为一个元组构成的新的可迭代的对象。这个函数可以传递多个可迭代的对象作为参数,并返回以元组为元素的迭代器。

传入多个对象

可以传递多个可迭代的对象作为zip()函数的参数。每个可迭代的对象代表zip()函数返回的新迭代器中的一列。新迭代器中的每个元组包含这些列中的元素。

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

这个例子中,将a、b、c三个列表作为zip()函数的参数传递。zip()函数返回一个新的迭代器,该迭代器每次返回一个元组(1, 'a', True),(2, 'b', False),(3, 'c', True)。这个for循环将新迭代器中的元组按照顺序解包,依次将元组中的元素赋值给变量x、y、z,然后打印出来。

传递不同大小的对象

当传递的可迭代对象不是同样的大小时,zip()函数将停止在最短的可迭代对象耗尽之后。这意味着,当传递的多个可迭代对象具有不同的长度时,新迭代器中将没有比最短可迭代对象更多的元素。

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

这个例子中,将a、b、c三个列表作为zip()函数的参数传递。由于b只有两个元素,所以最短的可迭代对象是b,新的迭代器中将没有比b更多的元素。zip()函数返回一个新的迭代器,该迭代器每次返回一个元组(1, 'a', True),(2, 'b', False)。由于新迭代器没有比b更多的元素,变量z将没有被赋值。

解压缩可迭代对象

可以使用*运算符(星号运算符)对zip()函数返回的元组解压缩。这允许我们轻松地将元组的元素分配给变量。

numbers = [1, 2, 3]
letters = ['a', 'b', 'c']
result = zip(numbers, letters)
unzipped = list(zip(*result))
print(unzipped)

这个例子中,将numbers、letters两个列表作为zip()函数的参数传递,返回一个新的迭代器。这个迭代器中的每个元素都是由numbers、letters两个列表中的元素构成的元组。然后,将这个迭代器传递给list()函数,得到一个列表[(1, 'a'), (2, 'b'), (3, 'c')]。接着,*运算符解压缩这个列表,得到(1, 2, 3)和('a', 'b', 'c')两个元组。这两个元组代表原始的可迭代对象。

总结

zip()函数是一个内置函数,用于将多个可迭代的对象组合成一个元组构成的新的可迭代的对象。该函数可以接受多个对象作为参数。如果传递的对象长度不一,则新的迭代器将仅包含与最短对象长度相同的元素。可以使用*运算符解压缩zip()函数返回的元组。