查找由2个独特的数组元素(python)生成的所有产品

时间:2013-10-13 02:38:41

标签: python arrays loops

如何确定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(数组)变量数组中找到每个唯一的2个变量集?在我这样做之后,我可以做相应的乘法/除法/减法/等。

充其量我能做的就是阵列的产物:

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

4 个答案:

答案 0 :(得分: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]

答案 1 :(得分:6)

你走了。当你知道技巧时很容易; - )

>>> from itertools import combinations
>>> [a*b for a, b in combinations([1,2,3,4], 2)]
[2, 3, 4, 6, 8, 12]

答案 2 :(得分: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))]

答案 3 :(得分: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。