当前位置: 首页 > 面试题库 >

Python中是否有内置product()?

伯洋
2023-03-14
问题内容

我一直在浏览教程和书籍,但是找不到内置产品函数,即与sum()相同类型的产品,但是找不到诸如的任何内容prod()

是通过导入mul()运算符在列表中找到商品的唯一方法吗?


问题答案:

发音

是的,这是对的。Guido拒绝了内置prod()函数的想法,因为他认为很少需要它。

Python 3.8更新

在Python 3.8中, prod() 已添加到math模块:

>>> from math import prod
>>> prod(range(1, 11))
3628800

用reduce()替代

正如您建议的那样,使用
reduce()

operator.mul()

制作自己的东西并不难:

def prod(iterable):
    return reduce(operator.mul, iterable, 1)

>>> prod(range(1, 5))
24

在Python 3中,
reduce()
函数已移至functools模块,因此您需要添加:

from functools import reduce

具体情况:阶乘

附带说明一下, prod()
的主要动机用例是计算阶乘。我们已经在math模块中对此提供了支持:

>>> import math

>>> math.factorial(10)
3628800

对数的替代

如果您的数据由浮点数组成,则可以使用带有指数和对数的 sum() 来计算乘积:

>>> from math import log, exp

>>> data = [1.2, 1.5, 2.5, 0.9, 14.2, 3.8]
>>> exp(sum(map(log, data)))
218.53799999999993

>>> 1.2 * 1.5 * 2.5 * 0.9 * 14.2 * 3.8
218.53799999999998


 类似资料:
  • 问题内容: 有没有一种好的方法来检查对象o是否是内置的Python函数? 我知道我可以使用,例如 因为type(pow)是’builtin_function_or_method’。 但是有更好的方法吗? 问题答案: 类型模块: 不过,如果您仔细观察,就会发现它与您现在所做的没有什么不同。 因此,根据您的情况使用

  • 问题内容: 我需要确定给定的Python变量是原生类型的实例:,,,,,等。有优雅的方法吗? 还是这是唯一的方法: 问题答案: 实现此目的的最佳方法是在称为和的元组列表中收集类型: 该模块包含所有重要类型的集合,这些集合可以帮助构建列表/元组。 从Python 2.2开始工作

  • 问题内容: 我有一个嵌套的字典对象,并且希望能够检索具有任意深度的键的值。我可以通过子类化做到这一点: 但是,我不需要子类化即可获得此行为。是否有一些内置方法具有相同或相似的行为?如果不是,是否有任何提供此行为的标准或外部模块? 我目前正在使用Python 2.7,尽管我也很好奇也听说过3.x解决方案。 问题答案: 一个非常常见的模式是使用空dict作为默认值: 如果您有多个键,则可以使用(请注意

  • 问题内容: Python有一个有序的字典。有序套呢? 问题答案: 为此,有一个有序的设置(可能的新链接)配方,可从Python 2文档中引用。它可以在Py2.6或更高版本以及3.0或更高版本上运行,而无需进行任何修改。该接口几乎与普通集合完全相同,不同之处在于初始化应使用列表进行。 这是一个,因此for的签名 的签名不匹配,但是由于它包含类似的内容,因此可以轻松添加:

  • 问题内容: 使用Python 3.x,我有一个要对其执行自然字母排序的字符串列表。 自然排序: Windows中文件的排序顺序。 例如,以下列表是自然排序的(我想要的): 这是上面列表的“排序”版本(我所拥有的): 我正在寻找一种类似于第一个的排序功能。 问题答案: 在PyPI上有一个名为natsort的第三方库。对于你的情况,可以执行以下任一操作: 你应该注意,它natsort使用通用算法,因此

  • 问题内容: 我来自Java世界,正在阅读Bruce Eckels的Python 3 ,和。 在阅读类时,它继续说在Python中不需要声明实例变量。你只需在构造函数中使用它们,然后它们就在那里。 因此,例如: 如果是这样,那么类的任何对象都Simple可以s在类外部更改变量的值。 例如: 在Java中,我们已经学会了有关公共/私有/保护变量的知识。这些关键字之所以有意义,是因为有时你需要一个类中的