【问题标题】:Python sum over map over listPython 对地图求和对列表
【发布时间】:2023-01-05 21:43:45
【问题描述】:

来自Mathematica 我习惯于使用非常简短的语法对列表上的地图求和。例如。对多项式函数的映射求和:

myList = {1,2,3};
output = Sum[ x^3+x^2+x , { x, myList } ]

为了在 Python 中做同样的事情,我想出了以下语法:

myList = [1,2,3]
output = sum(list(map(lambda x: x*x*x+x*x+x , myList)))

我的问题是:这是最简单/最有效的方法吗?我的意思是,在我看来,对于这样一个简单的任务,应该有比嵌套三个或四个内置函数更简单的方法吗?请让我知道如何更好地做到这一点。

【问题讨论】:

  • 你不需要list,它在内存中创建一个列表很浪费。

标签: python


【解决方案1】:

你不需要list。只是:

myList = [1,2,3]
output = sum(map(lambda x: x**3 + x**2 + x , myList))

另外,幂表达式是双星号**

【讨论】:

    【解决方案2】:

    你不需要maplist,你可以使用生成器表达式sum

    >>> myList = [1,2,3]
    >>> sum(x**3 + x**2 + x for x in myList)
    56
    

    【讨论】:

    • 这大概是最简洁的表达了。
    【解决方案3】:
    sum(x**3+x**2+x for x in myList)
    

    【讨论】:

    • 至少使用发电机。该列表只是浪费时间和内存
    • @DeepSpace 我更正了兄弟..谢谢
    【解决方案4】:

    我同意函数式编程的 python 语法不是最好的。 这是我使用列表理解的方式:

    myList = [1, 2, 3]
    result_of_map = [x**3+x**2+x for x in myList]
    output = sum(result_of_map)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      • 2021-03-18
      • 1970-01-01
      • 2021-11-23
      相关资源
      最近更新 更多