如何分别传播字符串列表?

Sun*_*Kim 1 python tree graph list

给出一个输入列表:

l=[["A","B"],["C","D","E"],["F","G"]]
Run Code Online (Sandbox Code Playgroud)

我想用这个列表做的是:

o = ["ACF", "ACG", "ADF", "ADG", "AEF", "AEG",
     "BCF", "BCG", "BDF", "BDG", "BEF", "BEG"]
Run Code Online (Sandbox Code Playgroud)

起初,我试图len用标准函数reduce和functools 生成一个列表和多个列表mul.

ls = list(map(len,l))
ll = ["" for i in range(reduce(mul, ls, 1))]
Run Code Online (Sandbox Code Playgroud)

接下来,我没有高效或"pythonic"的想法来解决这个问题.

顺便说一句,这似乎是树遍历的类似问题,但我认为这是多父树或与图实现相关的问题.

为了处理大量列表中的内存问题,如何使用有向图或任何其他算法使用python生成器解决这个问题?

Reu*_*ani 8

用途itertools.product:

>>> import itertools
>>> l=[["A","B"],["C","D","E"],["F","G"]]
>>> list(map(''.join,itertools.product(*l)))
['ACF', 'ACG', 'ADF', 'ADG', 'AEF', 'AEG', 'BCF', 'BCG', 'BDF', 'BDG', 'BEF', 'BEG']
Run Code Online (Sandbox Code Playgroud)

从文档:

输入迭代的笛卡儿乘积.大致相当于生成器表达式中的嵌套for循环.例如,乘积(A,B)与A中的x的((x,y)相同,对于B中的y,返回相同的值).