【问题标题】:How we treat tuple parameters and the reduce function in Python 3.x?我们如何处理 Python 3.x 中的元组参数和 reduce 函数?
【发布时间】:2015-11-12 08:53:04
【问题描述】:

元组参数解包和reduce函数不再可用。 我想知道您如何转换此代码: 假设 sales 是一个列表。

(i,v) = reduce( lambda (i_m, v_m),(i,v):
                (i,v) if v>v_m else (i_m, v_m),
                enumerate(sales))

【问题讨论】:

    标签: python python-3.x parameters lambda tuples


    【解决方案1】:

    使用参数解包定义函数可能是最简单的方法:

    >>> def find_max(sale1, sale2):
    ...     (i_m, v_m), (i,v) = sale1, sale2
    ...     return (i, v) if v>v_m else (i_m, v_m)
    ... 
    >>> from functools import reduce
    >>> sales = 1, 5, 2, 3
    >>> i, v = reduce(find_max, enumerate(sales))
    >>> i
    1
    >>> v
    5
    

    如果你想使用lambda,你需要索引元组:

    i, v = reduce(lambda sale1, sale2: sale2 if sale2[1] > sale1[1] else sale1,
                  enumerate(sales))
    

    【讨论】:

    • 不使用reduce不是更容易理解吗?这就是从标准库中删除背后的想法...
    猜你喜欢
    • 1970-01-01
    • 2020-03-08
    • 2015-09-05
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多