一.官方语法
zip
(* iterables )
创建一个迭代器,该迭代器聚合了每一个可迭代对象的元素。
返回一个元组类型的迭代器,其中第i个元组包含来自每个参数序列或可迭代对象的第i个元素。
当最短的输入可迭代对象的元素被用完时,迭代器停止。
当参数只有一个可迭代对象时,返回一元组(元组中只包含一个元素)迭代器。
当没有参数时,返回空迭代器。
def zip(*iterables): # zip('ABCD', 'xy') --> Ax By sentinel = object() iterators = [iter(it) for it in iterables] while iterators: result = [] for it in iterators: elem = next(it, sentinel) if elem is sentinel: return result.append(elem) yield tuple(result)
保证了可迭代对象从左到右的计算顺序。这使得使用zip(*[iter(s)]*n)函数将数据序列聚类为n个长度组成为可能。这将重复相同的迭代器 n 次,因此每个输出的元组都有对迭代器 n 次调用的结果。这可以将输入分割为 n 个长度的块。
当你不关心较长的可迭代对象的值无法匹配时,你可以在不等长的输入中使用zip()函数。如果这些值比较重要,你可以使用
itertools.zip_longest()函数代替zip()函数。
二.描述
接受任意数量的可迭代对象作为参数,将每个参数的第i个元素打包成第i个元组,然后返回一个zip类型的迭代器。
三.应用
zip()一般应用于数据的成对或者批量处理。
1.生成字典
# -*- coding:utf-8 -*-
a = ['a', 'b', 'c', 'd']
b = [1, 2, 3]
my_dict = dict(zip(a, b))
print(my_dict)
四.参考资料
1.python官方文档zip():https://docs.python.org/3/library/functions.html#zip