Skip to main content
 首页 » 编程设计

python之如何分别传播字符串列表

2025年05月04日23zhengyun_ustc

给定一个输入列表:

l=[["A","B"],["C","D","E"],["F","G"]] 

我想用这个列表做的是:

o = ["ACF", "ACG", "ADF", "ADG", "AEF", "AEG", 
     "BCF", "BCG", "BDF", "BDG", "BEF", "BEG"] 

起初,我尝试用标准函数 reduce 和 functools 的 mul 生成一个 len 列表。

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

接下来,我没有有效的或“pythonic”的想法来解决这个问题。

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

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

请您参考如下方法:

使用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'] 

来自文档:

Cartesian product of input iterables. Roughly equivalent to nested for-loops in a generator expression. For example, product(A, B) returns the same as ((x,y) for x in A for y in B).