假设我有一个元素列表。这些元素可以是文字(字符串)和/或列表L',L'',。。。现在list L'可以包含文字和/或列表。我想把它们展开,这样我就可以得到一个所有文字组合的列表。这个组合看起来是什么样的更容易显示而不是解释;所以我参考下面的例子。你知道吗
一个基本的例子:
L = [a,[b,c],d]
解决方案:
S = [[a,b,d],[a,c,d]]
解决方案是L的所有元素的组合。但是第二个元素是另一个列表,所以我希望分别创建一个列表中每个元素的组合。
更高级的示例:
L = [ a, [b,c], [d,[e]] ]
解决方案:
S = [ [a,b,d], [a,c,d], [a,b,e], [a,c,e] ]
我循环每个子列表的元素以创建新的组合。在第三个元素(list[d,[e]]
)中,第二个元素是另一个列表。但是它只包含一个元素e,所以当我在它上面循环时,它只返回一个元素。
复杂示例:
L = [ [a,b], [ [c,d], [e,[f,g]] ] ]
解决子问题,即第二个元素中的大列表:
S' = [ [c,e,f], [c,e,g], [d,e,f], [d,e,g] ]
部分解决的问题变成:
L' = [ [a,b], [ [c,e,f], [c,e,g], [d,e,f], [d,e,g] ] ]
最终解决方案为:
S = [ [a,c,e,f], [a,c,e,g], [a,d,e,f], [a,d,e,g], [b,c,e,f], [b,c,e,g], [b,d,e,f], [b,d,e,g] ]
S表示我正在解决的主要问题可能发生在子级别。为此,我需要递归。
我有一个很大的预感,这类问题肯定已经有了一个现有的算法(甚至是一个库;我使用的是python3)。有人能为我指出正确的方向吗?我自己好像搞不懂。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐