【问题标题】:How to zip lists in a list如何压缩列表中的列表
【发布时间】:2011-05-05 23:09:19
【问题描述】:

我想压缩以下列表:

>>> zip([[1,2], [3,4], [5,6]])
[[1,3,5], [2,4,6]]

只有将列表拆分为单独的组件时,当前的zip 实现才能实现这一点:

>>> zip([1,2], [3,4], [5,6])
   (1, 3, 5), (2, 4, 6)]

无法弄清楚如何拆分列表并将各个元素传递给zip。首选功能性解决方案。

【问题讨论】:

    标签: python functional-programming


    【解决方案1】:

    试试这个:

    >>> zip(*[[1,2], [3,4], [5,6]])
    [(1, 3, 5), (2, 4, 6)]
    

    Unpacking Argument Lists:

    当参数已经在列表或元组中但需要为需要单独位置参数的函数调用解包时,会发生相反的情况。例如,内置 range() 函数需要单独的开始和停止参数。如果它们不能单独使用,请使用 *-operator 编写函数调用,以将参数从列表或元组中解包出来:

    >>> range(3, 6)             # normal call with separate arguments
    [3, 4, 5]
    >>> args = [3, 6]
    >>> range(*args)            # call with arguments unpacked from a list
    [3, 4, 5]
    

    【讨论】:

    • 查看docs.python.org/tutorial/…了解其工作原理。
    • 如果您有一个包含一百万个条目的列表,我希望看到一个替代方案。在函数调用中解压一百万个项目可能不是一个好主意...
    猜你喜欢
    • 1970-01-01
    • 2011-11-20
    • 2021-06-03
    • 2020-09-30
    • 2013-11-09
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    相关资源
    最近更新 更多