Nice programing

Python에 내장 된 product ()가 있습니까?

nicepro 2020. 10. 14. 20:57
반응형

Python에 내장 된 product ()가 있습니까?


이 질문에 이미 답변이 있습니다.

튜토리얼과 책을 살펴 보았지만 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 () 의 주된 동기 부여 사용 사례 는 팩토리얼을 계산하는 것입니다. 우리는 이미 수학 모듈 에서이를 지원 합니다 .

>>> 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

아무 없다 product파이썬에서,하지만 당신은로 정의 할 수 있습니다

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

또는 NumPy가있는 경우 numpy.product.


이후 감소 () 함수가 모듈로 이동 된 functools파이썬 3.0 , 당신은 다른 접근을해야합니다.

다음 functools.reduce()을 사용하여 기능에 액세스 할 수 있습니다 .

product = functools.reduce(operator.mul, iterable, 1)

또는 파이썬 팀의 정신을 따르고 싶다면 ( 더 읽기 쉬울 것이라고 reduce()생각하기 때문에 제거 된 for), 루프로 수행하십시오.

product = 1
for x in iterable:
    product *= x

from numpy import multiply, product
list1 = [2,2,2]
list2 = [2,2,2]
mult = 3
prod_of_lists = multiply(list1,list2)
>>>[4,4,4]
prod_of_list_by_mult = multiply(list1,mult)
>>>[6,6,6]
prod_of_single_array = product(list1)
>>>8

numpy에는 목록에 대한 정말 멋진 기능이 많이 있습니다!

참고 URL : https://stackoverflow.com/questions/7948291/is-there-a-built-in-product-in-python

반응형