如何确定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
答案 0 :(得分:8)
>>> 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。