python3的文档对于zip()的描述:
zip
(*iterables)创建一个聚合了来自每个可迭代对象中的元素的迭代器。
返回一个元组的迭代器,其中的第 i 个元组包含来自每个参数序列或可迭代对象的第 i 个元素。 当所输入可迭代对象中最短的一个被耗尽时,迭代器将停止迭代。 当只有一个可迭代对象参数时,它将返回一个单元组的迭代器。 不带参数时,它将返回一个空迭代器。
函数会保证可迭代对象按从左至右的顺序被求值。 使得可以通过
zip(*[iter(s)]*n)
这样的惯用形式将一系列数据聚类为长度为 n 的分组。 这将重复 同样的 迭代器n
次,以便每个输出的元组具有第n
次调用该迭代器的结果。 它的作用效果就是将输入拆分为长度为 n 的数据块。
理解zip(*[iter(s)]*n)
之前,先要理解解包参数*,python3对解包参数的描述如下:
4.7.4. 解包参数列表
当参数已经在列表或元组中但需要为需要单独位置参数的函数调用解包时,会发生相反的情况。例如,内置的
range()
函数需要