原文: 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)