Python zip()函数

原文: https://thepythonguru.com/python-builtin-functions/zip/


于 2020 年 1 月 7 日更新


zip()函数采用一个或多个序列,并将序列中的对应项组合成一个元组。 最短序列用完时它将停止。 在 Python 2 中,zip()返回一个实际的列表,如果您处理大量数据则效率不高。 因此,在 Python 3 中,zip()返回一个可迭代的对象,该对象可按需生成结果。

语法zip(iter1 [,iter2 [...]]) --> zip object

Python 3

  1. >>>
  2. >>> zip([1, 2, 3, 4], "pow")
  3. <zip object at 0x7f3c1ceb51c8>
  4. >>>

要产生结果,请在list()调用中包装zip()

  1. >>>
  2. >>> list(zip([1, 2, 3, 4], "pow"))
  3. [(1, 'p'), (2, 'o'), (3, 'w')]
  4. >>>

试试看:

  1. zip_obj = zip([1, 2, 3, 4], "pow")
  2. print(list(zip_obj))

Python 2

  1. >>>
  2. >>> zip([1, 2, 3, 4], "pow") # In Python 2, list() call is not required
  3. [(1, 'p'), (2, 'o'), (3, 'w')]
  4. >>>

这是一个实际示例,其中zip()用于并行迭代多个序列。

  1. >>>
  2. >>> for i, j, k, l in zip([1, 2, 3], "foo", ("one", "two", "three"), {"alpha", "beta", "gamma"}):
  3. ... print(i, j, k, l)
  4. ...
  5. 1 f one alpha
  6. 2 o two gamma
  7. 3 o three beta
  8. >>>

试一试:

  1. for i, j, k, l in zip([1, 2, 3], "foo",
  2. ("one", "two", "three"),
  3. {"alpha", "beta", "gamma"}
  4. ):
  5. print(i, j, k, l)

这是另一个使用zip()函数创建字典的示例。

  1. >>>
  2. >>> keys = ['alpha', 'beta', 'gamma']
  3. >>> values = [10, 20, 30]
  4. >>>
  5. >>> d = dict(zip(keys, values))
  6. >>> d
  7. {'alpha': 10, 'beta': 20, 'gamma': 30}
  8. >>>

试一试:

  1. keys = ['alpha', 'beta', 'gamma']
  2. values = [10, 20, 30]
  3. d = dict(zip(keys, values))
  4. print(d)