Python 根据元组元素的和求元组元素的乘积

Python 根据元组元素的和求元组元素的乘积,python,Python,如果您能就以下问题提供任何反馈,我将不胜感激。到目前为止,我在Python上编写了一段代码,生成了二维元组的组合,其中每个元素都是1到4之间的值。对于(a1,a2),a1和a2可以是1到4之间的任意值 因此,生成了以下元组 tuple_combinations = [(1, 1), (1, 2), (1, 3), (1, 4), (2, 1), (2, 2), (2, 3), (2, 4), (3, 1), (3, 2), (3, 3), (3, 4), (4, 1), (4, 2), (4,

如果您能就以下问题提供任何反馈,我将不胜感激。到目前为止,我在Python上编写了一段代码,生成了二维元组的组合,其中每个元素都是1到4之间的值。对于(a1,a2),a1和a2可以是1到4之间的任意值

因此,生成了以下元组

tuple_combinations =  [(1, 1), (1, 2), (1, 3), (1, 4), (2, 1), (2, 2), (2, 3), (2, 4), (3, 1), (3, 2), (3, 3), (3, 4), (4, 1), (4, 2), (4, 3), (4, 4)]
然后,我取每个元组的元素之和,生成:

sum_tuple_combinations = [2, 3, 4, 5, 3, 4, 5, 6, 4, 5, 6, 7, 5, 6, 7, 8]
现在我需要帮助计算和为5的元组的元素的乘积。对于这个例子,这是元组(2,3),(3,2),(1,4)和(4,1)的乘积,这会给我

 [6,6,4,4]
我应该如何在Python上编写代码

这就是我到目前为止所做的:

  import itertools
  x = [1,2,3,4]
  combinations= [p for p in itertools.product(x, repeat=2)]
  print(combinations)
  sum_of_combinations = map(sum, combinations)
  print(sum_of_combinations)
  #product_of_combinations = [x*y for sum_of_combinations = 5]

此外,虽然这解决了2维情况,其中n=2,但我想考虑元组中元素的乘积,以求其他维数,例如n=200等等。因此,特别是对于像N=200这样的维度,我想知道是否有一种计算成本低廉的方法来实现这一点?

不要忘记,(1,4)和(4,1)的总和也是5

二维情况:

>>> from itertools import product
>>> L = [1, 2, 3, 4]
>>> [a*b for a,b in product(L, L) if a+b == 5]
[4, 6, 6, 4]
n-dim情况:

>>> from operator import mul
>>> n = 2
>>> [reduce(mul, t, 1) for t in product(L, repeat=n) if sum(t) == 5]
[4, 6, 6, 4]
别忘了(1,4)和(4,1)的总和也是5

二维情况:

>>> from itertools import product
>>> L = [1, 2, 3, 4]
>>> [a*b for a,b in product(L, L) if a+b == 5]
[4, 6, 6, 4]
n-dim情况:

>>> from operator import mul
>>> n = 2
>>> [reduce(mul, t, 1) for t in product(L, repeat=n) if sum(t) == 5]
[4, 6, 6, 4]

wim的代码是一种一次完成所有工作的好方法。通过将最后一行更改为,可以修改代码以使其正常工作

[x*y for x, y in tuple_combinations if x+y==5]

wim的代码是一种一次完成所有工作的好方法。通过将最后一行更改为,可以修改代码以使其正常工作

[x*y for x, y in tuple_combinations if x+y==5]

那么
(1,4)
(4,1)
的元组呢?您好,我更新了我的问题以包括我到目前为止所做的事情,谢谢您,是的,我忘记了
(1,4)
(4,1)
(4,1)
的元组呢?您好,我更新了我的问题以包括我到目前为止所做的事情,谢谢您,是的,我忘了
(1,4)
(4,1)
太棒了!谢谢你的回复。它确实奏效了。然而,在我上面的代码中,它包含了n个元组。所以对于这个例子,它解决了2元组的情况。我怎样才能把它推广到10个元组呢?其中,对于代码的第3行,组合=[itertools.product(x,repeat=10)中的p代表p]Ahh,OK。我将进行概括编辑,请稍候。非常感谢!然而,我想知道是否有另一种计算成本更低的编码方式?也许用numpy数组代替?我不确定。我注意到当我试图考虑更高的维度比如N=300时,我收到了一个错误的记忆!谢谢你的回复。它确实奏效了。然而,在我上面的代码中,它包含了n个元组。所以对于这个例子,它解决了2元组的情况。我怎样才能把它推广到10个元组呢?其中,对于代码的第3行,组合=[itertools.product(x,repeat=10)中的p代表p]Ahh,OK。我将进行概括编辑,请稍候。非常感谢!然而,我想知道是否有另一种计算成本更低的编码方式?也许用numpy数组代替?我不确定。我注意到当我试图考虑诸如N=300的更高维度时,我收到了内存错误。