如何一步扁平化列表嵌套列表

2 投票
7 回答
1309 浏览
提问于 2025-04-15 15:44

我有一个包含多个列表的列表,每个列表里面又有多个元组。

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教程

撰写回答