gpt4 book ai didi

Python:为什么使用 zip(*) 而不是 unzip()?

转载 作者:行者123 更新时间:2023-12-04 18:04:14 25 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.

6年前关闭。




Improve this question




鉴于 zen of python为什么是 zip (*) 用于解压缩而不是一些名为 的函数解压() ?例如 Transpose/Unzip Function (inverse of zip)?显示如何解压缩列表。

>>> zip(*[('a', 1), ('b', 2), ('c', 3), ('d', 4)])
[('a', 'b', 'c', 'd'), (1, 2, 3, 4)]

怎么更多:
  • 比丑更美
  • 显式比隐式
  • 比复杂更简单
  • 可读

  • 然后
    >>> unzip([('a', 1), ('b', 2), ('c', 3), ('d', 4)])

    ?

    我在这里想念什么?

    最佳答案

    当您执行 zip(*your_list) 时,您实际上并没有解压缩.你还在拉。

    zip 是一个可以接受任意数量参数的函数。在您的情况下,您基本上有四个不同的序列要压缩:('a', 1) , ('b', 2) , ('c', 3)('d', 4) .因此,您想调用 zip像这样:

    >>> zip(('a', 1), ('b', 2), ('c', 3), ('d', 4))
    [('a', 'b', 'c', 'd'), (1, 2, 3, 4)]

    但是您的序列不在单独的变量中,您只有一个包含所有变量的列表。这是 * operator进来。这个操作符解包列表,使列表中的每个元素都成为函数的参数。

    这意味着当你这样做时:
    your_list = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
    zip(*your_list)

    Python 调用 zip将列表中的每个元素作为参数,如下所示:
    zip(('a', 1), ('b', 2), ('c', 3), ('d', 4))

    这就是为什么 unzip功能不是必需的:解压缩只是另一种 zip,只需使用 zip 即可轻松实现。函数和 *运算符(operator)。

    关于Python:为什么使用 zip(*) 而不是 unzip()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34658436/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com