247

数値のリストを取得してそれらを乗算する関数を作成する必要があります。例: [1,2,3,4,5,6]をくれます1*2*3*4*5*6。私は本当にあなたの助けを借りることができました。

4

17 に答える 17

244

Python 3: 使用functools.reduce:

>>> from functools import reduce
>>> reduce(lambda x, y: x*y, [1,2,3,4,5,6])
720

Python 2: を使用reduce:

>>> reduce(lambda x, y: x*y, [1,2,3,4,5,6])
720

2 および 3 の使用と互換性がある場合は、次のようpip install sixになります。

>>> from six.moves import reduce
>>> reduce(lambda x, y: x*y, [1,2,3,4,5,6])
720
于 2012-12-12T13:03:18.597 に答える
187

以下を使用できます。

import operator
import functools
functools.reduce(operator.mul, [1,2,3,4,5,6], 1)

reduce説明については、およびoperator.mulドキュメントを参照してください。

import functoolsPython 3+の行が必要です。

于 2012-12-12T13:03:06.647 に答える
106

を使用しnumpy.prodてタスクを実行します。下記参照。

import numpy as np
mylist = [1, 2, 3, 4, 5, 6] 
result = np.prod(np.array(mylist))  
于 2015-09-06T17:54:16.140 に答える
68

何もインポートせず、Python のより複雑な領域を避けたい場合は、単純な for ループを使用できます。

product = 1  # Don't use 0 here, otherwise, you'll get zero 
             # because anything times zero will be zero.
list = [1, 2, 3]
for x in list:
    product *= x
于 2012-12-12T15:47:11.487 に答える
42

を開始Python 3.8すると、.prod関数がmath標準ライブラリのモジュールに含まれています。

math.prod(iterable, *, start=1)

このメソッドは、start値 (デフォルト: 1) に反復可能な数値を掛けた積を返します。

import math
math.prod([1, 2, 3, 4, 5, 6])

>>> 720

iterable が空の場合、これは生成します1(または、start提供されている場合は値)。

于 2019-02-14T19:32:39.203 に答える
6

Numpyリストの積を返す関数がありprod()ます。または、この場合はnumpyであるため、指定された軸上の配列の積です:

import numpy
a = [1,2,3,4,5,6]
b = numpy.prod(a)

...またはそれ以外の場合は、インポートするだけですnumpy.prod():

from numpy import prod
a = [1,2,3,4,5,6]
b = prod(a)
于 2019-08-21T05:05:52.563 に答える
4
nums = str(tuple([1,2,3]))
mul_nums = nums.replace(',','*')
print(eval(mul_nums))
于 2016-09-09T05:26:31.280 に答える
1

私は次の方法でこれを望みます:

    def product_list(p):
          total =1 #critical step works for all list
          for i in p:
             total=total*i # this will ensure that each elements are multiplied by itself
          return total
   print product_list([2,3,4,2]) #should print 48
于 2015-11-16T10:40:49.677 に答える