用法:
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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。