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()函数返回的元组。