如何一步扁平化列表嵌套列表
我有一个包含多个列表的列表,每个列表里面又有多个元组。
A= [ [(1,2,3),(4,5,6)], [(7,8,9),(8,7,6),(5,4,3)],[(2,1,0),(1,3,5)] ]
最外层的列表可以有任意数量的内层列表,而内层列表可以包含任意数量的元组。每个元组里面总是有三个整数。
我想从每个内层列表中生成所有可能的元组组合:
[(1,2,3),(7,8,9),(2,1,0)]
[(1,2,3),(7,8,9),(1,3,5)]
[(1,2,3),(8,7,6),(2,1,0)]
...
[(4,5,6),(5,4,3),(1,3,5)]
一个简单的方法是使用类似于 itertools.product()
的函数,但它必须这样调用:
itertools.product([(1,2,3),(4,5,6)], [(7,8,9),(8,7,6),(5,4,3)],[(2,1,0),(1,3,5)])
也就是说,最外层的列表需要去掉。我不知道该怎么做。有没有更好的方法来生成所有元组的组合?
7 个回答
2
这个方法适用于你的例子,前提是只有一层嵌套列表(也就是说,没有列表里面再有列表的情况):
itertools.product(*A)
2
你可以这样使用 itertools.product:
itertools.product(*A) # where A is your list of lists of tuples
这样做会把你列表里的元素展开,变成你调用的函数的参数。
10
itertools.product(*A)
想了解更多细节,可以查看这个Python教程