2017-01-11 13 views
-4

これはかなり特殊な要求です。概念を抽象的に説明するのではなく、私が何をしたいかの例を挙げます。2つのリストの複雑なマージ:1つのテンプレートと多くの順列

I持た1 'テンプレート' リストまたは文字列:[ X、G、X] ...または 'XGX'

そして多くの '順列' リスト: [U、U]、[U、 012、UC、CU、CU、CC、

そして、次のリストを取得したいと考えています。 [ UGU、CGU、UGC、CGC]

誰でもこの問題をどのように攻撃するか考えていますか?

ありがとうございます!

+0

と仮定perm_list = '[[ 'U'、 'U']、[ 'U'、 'C​​']、[ 'C'、 'U']、 ['c'、 'c']] 'それから、perm_listのxに対して['G'.join(x) – gobrewers14

答えて

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'] 
関連する問題