用法:
zip(*iterables, strict=False)
并行迭代几个可迭代对象,生成元组,每个对象都有一个项目。
例子:
>>> for item in zip([1, 2, 3], ['sugar', 'spice', 'everything nice']): ... print(item) ... (1, 'sugar') (2, 'spice') (3, 'everything nice')
更正式地说:
zip()
返回元组的迭代器,其中i
-th 元组包含来自每个参数迭代的i
-th 元素。zip()
的另一种理解方式是将行转换为列,将列转换为行。这类似于 transposing a matrix 。zip()
是惰性的:在迭代迭代之前不会处理元素,例如通过for
循环或包装在list
中。需要考虑的一件事是传递给
zip()
的迭代可能有不同的长度;有时是设计使然,有时是因为准备这些迭代的代码中的错误。 Python 提供了三种不同的方法来处理这个问题:默认情况下,
zip()
在最短的迭代用完时停止。它将忽略较长迭代中的剩余项,将结果截断为最短迭代的长度:>>> list(zip(range(3), ['fee', 'fi', 'fo', 'fum'])) [(0, 'fee'), (1, 'fi'), (2, 'fo')]
zip()
通常用于假设可迭代的长度相等的情况。在这种情况下,建议使用strict=True
选项。它的输出与常规zip()
相同:>>> list(zip(('a', 'b', 'c'), (1, 2, 3), strict=True)) [('a', 1), ('b', 2), ('c', 3)]
与默认行为不同,它检查可迭代对象的长度是否相同,如果不是,则引发
ValueError
:>>> list(zip(range(3), ['fee', 'fi', 'fo', 'fum'], strict=True)) Traceback (most recent call last): ... ValueError: zip() argument 2 is longer than argument 1
如果没有
strict=True
参数,任何导致不同长度的迭代的错误都将被静音,可能表现为程序另一部分中难以发现的错误。较短的可迭代对象可以用一个常数值填充,以使所有可迭代对象具有相同的长度。这是由
itertools.zip_longest()
完成的。
边情况:使用单个可迭代参数,
zip()
返回 1 元组的迭代器。没有参数,它返回一个空的迭代器。技巧和窍门:
保证迭代的从左到右的评估顺序。这使得使用
zip(*[iter(s)]*n, strict=True)
将数据系列聚类到 n-length 组中成为可能。这将重复same
迭代器n
次,以便每个输出元组都具有对迭代器的n
调用的结果。这具有将输入划分为n-length 块的效果。zip()
与*
运算符一起可用于解压缩列表:>>> x = [1, 2, 3] >>> y = [4, 5, 6] >>> list(zip(x, y)) [(1, 4), (2, 5), (3, 6)] >>> x2, y2 = zip(*zip(x, y)) >>> x == list(x2) and y == list(y2) True
在 3.10 版中更改:添加了
strict
争论。
相关用法
- Python zip()用法及代码示例
- Python zipfile.ZipFile.open用法及代码示例
- Python zipfile.PyZipFile.writepy用法及代码示例
- Python zipfile.Path.joinpath用法及代码示例
- Python string zfill()用法及代码示例
- Python zlib.compress(s)用法及代码示例
- Python zlib.decompress(s)用法及代码示例
- Python zlib.adler32()用法及代码示例
- Python numpy matrix zeros()用法及代码示例
- Python zlib.crc32()用法及代码示例
- Python zoneinfo.ZoneInfo用法及代码示例
- Python cudf.core.column.string.StringMethods.is_vowel用法及代码示例
- Python torch.distributed.rpc.rpc_async用法及代码示例
- Python torch.nn.InstanceNorm3d用法及代码示例
- Python sklearn.cluster.MiniBatchKMeans用法及代码示例
- Python pandas.arrays.IntervalArray.is_empty用法及代码示例
- Python tf.compat.v1.distributions.Multinomial.stddev用法及代码示例
- Python numpy.less()用法及代码示例
- Python tf.compat.v1.distribute.MirroredStrategy.experimental_distribute_dataset用法及代码示例
- Python Sympy Permutation.list()用法及代码示例
注:本文由纯净天空筛选整理自python.org大神的英文原创作品 zip。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。