两个列表的复杂合并:一个模板和许多排列

时间:2017-01-11 18:35:01

标签: python

这是一个相当特殊的要求。我不是抽象地解释这个概念,而是举例说明我想做的事情。

我有一个'模板'列表或字符串:[ X,G,X] ......或' XGX'

许多'排列'列表: [U,U],[U,C],[C,U],[C,C] ......或' UU',' UC',' CU& #39;,' CC'

我想获得以下列表: [UGU,CGU,UGC,CGC]

有人对如何解决这个问题有任何想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

def resolveTemplates(_template, perms):
    for perm in perms:
        template = list(_template)
        perm = iter(perm)
        for i,char in enumerate(template):
            if char != "X": continue
            template[i] = next(perm)
        yield template

输出:

In [113]: print(*resolveTemplates('XGX', ['UU', 'UC', 'CU', 'CC']), sep='\n')
['U', 'G', 'U']
['U', 'G', 'C']
['C', 'G', 'U']
['C', 'G', 'C']