首页 > 解决方案 > 使用 python itertools 查找总和为目标值的子列表元素的所有可能组合

问题描述

拜托,我已经完成了已经回答的问题,但找不到答案。我对python相当陌生。

我的问题是:

例如,鉴于:

myList = [[2,4], [1,3], [3,5], [1,4]]

如何使用 python itertools/combinations 遍历嵌套列表(myList),以便我可以找到所有可能的myList元素(即子列表)的组合,其零索引(即myList [ i ][0] ) 和第一索引(即myList [ i ][1])的总和分别为 4 和 11(其中i在范围内 (len( myList ))。

myList我想找到满足以下两个条件的子列表的所有可能组合:

sum( myList [i][0]) == 4 和 sum( myList [i][1]) == 11 (其中i在范围内 (len( myList ))

所以,从myList我想得到输出:

输出:[[[2,4]、[1,3]、[1,4]]、[任何其他组合_1]、[任何其他组合_2]、[等等]]

拜托,我将不胜感激您能提供的任何帮助。谢谢。

标签: pythonloopsiterationcombinationsitertools

解决方案


这应该有效:

from itertools import combinations

myList = [[2,4], [1,3], [3,5], [1,4]]

combos = [
    x for i in range(1, len(myList)+1)
    for x in combinations(myList, i)
    if sum(list(zip(*x))[0]) == 4 and sum(list(zip(*x))[1]) == 11
]

推荐阅读