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生成器解决这个问题?
>>> 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,返回相同的值).