Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用itertools获得每个参数的元组,而不是最终结果?_Python_Python 3.x - Fatal编程技术网

Python 如何使用itertools获得每个参数的元组,而不是最终结果?

Python 如何使用itertools获得每个参数的元组,而不是最终结果?,python,python-3.x,Python,Python 3.x,我尝试将三个列表的元素相互组合。我想以特定的方式将每个元素与每个元素组合起来: 元素*元素**元素 我想要价值观​​每个参数的值。条件是不超过某个总值 事实上,我使用了itertools和product。我能够收到最高的总值,但不是每个参数的值。我不知道如何整合这个条件 来自itertools导入产品的 列表1=列表(范围(1,4)) 列表2=列表(范围(4,8)) 列表3=列表(范围(3,7)) 结果=([m*(n**o)表示产品中的m,n,o(列表1,列表2,列表3)]) 最大值(结果)

我尝试将三个列表的元素相互组合。我想以特定的方式将每个元素与每个元素组合起来:

元素*元素**元素

我想要价值观​​每个参数的值。条件是不超过某个总值

事实上,我使用了itertools和product。我能够收到最高的总值,但不是每个参数的值。我不知道如何整合这个条件

来自itertools导入产品的

列表1=列表(范围(1,4))
列表2=列表(范围(4,8))
列表3=列表(范围(3,7))
结果=([m*(n**o)表示产品中的m,n,o(列表1,列表2,列表3)])
最大值(结果)

输出实际上是352947,但我预计类似于[4,8,7]。在下一步中,我想添加一个条件。我想要每个参数的值,但总数不应超过15000。你们能帮帮我吗?

m
n
o
以及计算值
m*(n**o)
作为列表中的每个元素。然后使用lambda获取结果列表的最大值,使用计算值作为键:

from itertools import product

List1 = list(range(1,4))
List2 = list(range(4,8))
List3 = list(range(3,7))

result = ([(m, n, o, m*(n**o)) for m,n,o in product(List1,List2,List3)])
max_m, max_n, max_o, max_value = max(result, key=lambda tup: tup[3])

包括元组中的
m
n
o
以及计算值
m*(n**o)
,作为列表中的每个元素。然后使用lambda获取结果列表的最大值,使用计算值作为键:

from itertools import product

List1 = list(range(1,4))
List2 = list(range(4,8))
List3 = list(range(3,7))

result = ([(m, n, o, m*(n**o)) for m,n,o in product(List1,List2,List3)])
max_m, max_n, max_o, max_value = max(result, key=lambda tup: tup[3])

谢谢,但我不明白如何添加条件。您的代码提供了以下输出:376352947。如何设置最大值,例如150000?您可以将条件添加到列表本身:
result=([(m,n,o,m*(n**o))如果m*(n**o),则在产品(列表1,列表2,列表3)中为m,n,o设置最大值谢谢,但我不知道如何添加条件。您的代码给了我以下输出:37 6 352947。我如何设置最大值,例如150000?您可以将条件添加到列表理解本身:
result=([(m,n,o,m*(n**o))对于产品(列表1,列表2,列表3)中的m,n,o,如果m*(n**o)