gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:15:27 24 4
gpt4 key购买 nike

给定一个输入列表:

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).

关于python - 如何分别传播字符串列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48660533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com