Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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,给出如下列表: [(1,2)、(3,4,5)、(6,5)] 我知道使用itertools很容易组合元组列表 (1,3,6)、(1,4,6)、(1,5,6)、(2,3,6)、(2,4,6)、(2,5,6) 但是如果不使用itertools,我如何解决它呢 [(x, y, 6) for x in (1, 2) for y in (3, 4, 5)] 另请参见,了解更多通用解决方案,这里有一个相当通用的方法,在输入上有一系列循环: lst = [(1, 2), (3, 4, 5), (6,)]

给出如下列表:

[(1,2)、(3,4,5)、(6,5)]

我知道使用itertools很容易组合元组列表

(1,3,6)、(1,4,6)、(1,5,6)、(2,3,6)、(2,4,6)、(2,5,6)

但是如果不使用itertools,我如何解决它呢

 [(x, y, 6) for x in (1, 2) for y in (3, 4, 5)]

另请参见,了解更多通用解决方案,这里有一个相当通用的方法,在输入上有一系列循环:

lst = [(1, 2), (3, 4, 5), (6,)]

result = [tuple([l]) for l in lst[0]]
for l in lst[1:]:
    out = []
    for r in result:
        for i in range(len(l)):
            out.append((*r, l[i]))
    result = out

print(result)
输出:

[(1, 3, 6), (1, 4, 6), (1, 5, 6), (2, 3, 6), (2, 4, 6), (2, 5, 6)]

明亮的有没有不使用列表理解的替代方法?如果您正在寻找一种复杂的方法检查,您可以使用嵌套循环。另一个想法是,定义笛卡尔乘积或从另一个站点复制粘贴,并将reduce应用于列表
reduce(笛卡尔,[(1,2),(3,4,5),(6,))
,而代码对许多人来说似乎是显而易见的,请在您的唯一代码答案中添加一些解释。还要注意的是,你没有返回元组。虽然这段代码可能会解决这个问题,但如何以及为什么解决这个问题将真正有助于提高你的文章质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。尽管下面的答案很好,你还是应该看看
def product(pools):
    result = [[]]
    for pool in pools:
        result = [x+[y] for x in result for y in pool]
    return result

product([(1,2,3),(4,5),(6,)])
[[1, 4, 6], [1, 5, 6], [2, 4, 6], [2, 5, 6], [3, 4, 6], [3, 5, 6]]