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
'Nice programing' 카테고리의 다른 글
Flask 개발 서버를 실행하면 자체적으로 두 번 실행되는 이유는 무엇입니까? (0) | 2020.10.14 |
---|---|
aws s3, cp 또는 sync에서 폴더를 다운로드 하시겠습니까? (0) | 2020.10.14 |
angular2 rc.5 사용자 지정 입력, 이름이 지정되지 않은 양식 컨트롤에 대한 값 접근 자 없음 (0) | 2020.10.14 |
require가있는 Node.js ES6 클래스 (0) | 2020.10.14 |
Android ConstraintLayout-하나의 뷰를 다른 뷰 위에 놓기 (0) | 2020.10.14 |