4

Pythonで配列内のすべての数値の積/合計/差/除算をどのように決定しますか? たとえば、乗算の場合:

array=[1,2,3,4]

出力は 1*2、1*3、1*4、2*3、2*4、3*4 になります。

[2,3,4,6,8,12] 

「for」ループと「while」ループがどのように機能するかは理解していますが、解決策を見つけることができませんでした.len(array)変数の配列で2つの変数の一意のセットをすべて見つけるにはどうすればよいですか? それを行った後、対応する乗算/除算/減算などを行うことができます。

せいぜい私が作ることができたのは、配列の積だけでした:

array=[1,2,3]
product = 1
for i in array:
    product *= i
print product
4

4 に答える 4

8

使用itertools.combinations:

>>> from itertools import combinations
>>> array = [1, 2, 3, 4]
>>> [i * j for i, j in combinations(array, 2)]
[2, 3, 4, 6, 8, 12]
于 2013-10-13T02:40:37.157 に答える
6

どうぞ。コツを知っていれば簡単です;-)

>>> from itertools import combinations
>>> [a*b for a, b in combinations([1,2,3,4], 2)]
[2, 3, 4, 6, 8, 12]
于 2013-10-13T02:40:39.460 に答える
4
array = [1, 2, 3, 4]

ループベースのソリューションにまだ興味がある場合。

result = []
for i in range(len(array)):
    for j in range(i + 1, len(array)):
        result.append(array[i] * array[j])
print result

これは、次のようにリスト内包表記で記述できます。

print [array[i] * array[j] for i in range(len(array)) for j in range(i + 1, len(array))]
于 2013-10-13T02:46:28.073 に答える
4

すべての ITERTOOLS を使用してください。

>>> from itertools import starmap, combinations as combos
>>> from operator import mul
>>> products = starmap(mul, combos([1,2,3,4], 2))
>>> list(products)
[2, 3, 4, 6, 8, 12]

わかりました、すべてではありませんが、MOAR。

于 2013-10-13T02:48:30.147 に答える