2017-07-06 28 views
-3

輸入列表:(僅當索引[1]具有/)製作置換基於圖案

['A', 'dog,big/small;rat,big/small', '12', '21'] 

返回清單:

['A', 'dog,big;rat,big', '12', '21'] 
['A', 'dog,small;rat,big', '12', '21'] 
['A', 'dog,big;rat,small', '12', '21'] 
['A', 'dog,small;rat,small', '12', '21'] 
+1

你試過了什麼?在這裏我沒有看到Stack Overflow類型的問題。 – Prune

+0

歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [在主題](http://stackoverflow.com/help/on-topic)和[如何提問](http://stackoverflow.com/help/how-to-ask)適用於此處。 StackOverflow不是一個設計,編碼,研究或教程服務。 – Prune

回答

0

這一個應該工作的一般輸入 - 這種類型的字符串:

def permute(s): 
    a, b = s.split(',') 
    return [a + "," + c for c in b.split('/')] 

def traverse(s): 
    parts = s.split(';', 1) 
    if len(parts) == 1: 
     return permute(s) 
    else: 
     return sum([[k + ';' + l for l in traverse(parts[1])] for k in permute(parts[0])], []) 

for s in traverse('dog,big/small;rat,big/small'): 
    print ['A', s, '12', '21']