【问题标题】:Product of a list python [duplicate]列表python的产品[重复]
【发布时间】:2012-08-04 20:14:12
【问题描述】:

可能重复:
Returning the product of a list

除了这种方式之外,还有其他方法可以获取列表的产品吗:

def prod(L):
 p=1
 for i in L:
   p= i * p
 return p

这段代码是正确的,但我需要找到另一种方法。而且我真的找不到。

【问题讨论】:

  • 检查了那个问题......我不确定是不是重复的,但我没有找到我需要的答案。
  • @jamylak 我试了几次,输出是正确的。

标签: python python-3.x product


【解决方案1】:

使用reduce(f, iterable[, initializer])

>>> from operator import mul
>>> reduce(mul, [1, 2, 3], 1)
6

reduce() 抽象出以下模式: a ⊗ b ⊗ c ⊗ d ⊗ e ... 其中 是二元(左关联)运算符,即接受两个参数的函数。

【讨论】:

  • 这不适用于空列表。
  • @Dogbert 是的,它会的,因为给出了一个初始化器。
  • 只是注意到问题被标记为“python-3.x”,而在 Python 3 中,reduce 函数不是内置的。相反,它位于functools 模块中。
  • @phant0m 当 Dogbert 写他的评论时,还没有这个初始化器。
  • 啊,是的,我现在明白了。在这种情况下,我建议您自己回复评论,以便将来的访问者看到错误已得到修复。
【解决方案2】:

如果你被允许使用numpy:

import numpy as np
product = np.product([1, 2, 3]) # returns 1.0 if empty list

【讨论】:

    【解决方案3】:
    >>> reduce(lambda x, y: x * y, [1, 2, 3], 1)
    6
    >>> reduce(lambda x, y: x * y, [], 1)
    1
    

    【讨论】:

      【解决方案4】:
      def prod(array):
          if len(array)==0: return 1
          else: return array[0]*prod(array[1:])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-22
        • 2016-06-08
        • 2011-11-28
        • 2022-11-28
        • 1970-01-01
        • 2015-06-01
        • 2021-06-10
        相关资源
        最近更新 更多