Cập nhật:
Trong Python 3.8, hàm prod đã được thêm vào mô đun toán học . Xem: math.prod () .
Thông tin cũ hơn: Python 3.7 và trước đó
Hàm bạn đang tìm kiếm sẽ được gọi là prod () hoặc sản phẩm () nhưng Python không có chức năng đó. Vì vậy, bạn cần phải viết của riêng bạn (đó là dễ dàng).
Phát âm trên prod ()
Vâng đúng vậy. Guido đã từ chối ý tưởng cho hàm prod () tích hợp vì ông nghĩ rằng nó hiếm khi cần thiết.
Thay thế bằng giảm ()
Như bạn đã đề xuất, không khó để tự tạo bằng cách sử dụng less () và oper.mul () :
from functools import reduce # Required in Python 3
def prod(iterable):
return reduce(operator.mul, iterable, 1)
>>> prod(range(1, 5))
24
Lưu ý, trong Python 3, hàm less () đã được chuyển sang mô đun funcools .
Trường hợp cụ thể: Yếu tố
Là một lưu ý phụ, trường hợp sử dụng động lực chính cho prod () là để tính các giai thừa. Chúng tôi đã có hỗ trợ cho điều đó trong mô-đun toán học :
>>> import math
>>> math.factorial(10)
3628800
Thay thế bằng logarit
Nếu dữ liệu của bạn bao gồm các số float, bạn có thể tính toán một sản phẩm bằng sum () với số mũ và logarit:
>>> 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
Lưu ý, việc sử dụng log () yêu cầu tất cả các đầu vào là dương.