2015-12-05 41 views
1

我有一個列表see = [],其中I需要插入符號(.,在列表中的值) 基於列表unpaired =[1,3]和元組列表`配對= [(2,4)] +。如何存儲基於另一個列表和元組

因此,對於列表中未配對和元組配對的每個值,我需要在see中插入字符。

例如,對於值1,3,在不成對的情況下,我存儲'。'在列表中的第一和第三位可以看到。類似地,對於配對的元組中的2,4值,我在第二和第四位分別存儲'('和')'列表。我的最終結果應該是這樣的see=[.,(,.,)]

我該如何處理?

+0

你想要的東西是:

for element in unpaired: yourDict[element] = '.' for element in paired: yourDict[element[0]] = '(' yourDict[element[1]] = ')' 

現在你可以通過soring你的字典鍵(sorted(yourDict))並調用list(yourDict.values())得到的結果有點奇怪。它的用例是什麼?也許我們可以建議你採用不同的方法。 –

+0

向我們展示了一個示例,這是一個令人困惑的混亂 – Netwave

+0

@AhsanulHaque Okk ..我正在研究用於rna摺疊的動態編程算法的追溯。 –

回答

0

你可以使用一個字典,其中鍵是存儲在paired指數和unpaired。這有助於設置輸出數據,但與使用列表不同的是,當其他索引尚未出現時,可以將索引值存儲在索引中。

例如

unpaired = [1, 3, 5, 7, 8] 
paired = [(2,4), (6,9)] 

print(list(yourDict.values())) 

打印

['.', '(', '.', ')', '.', '(', '.', '.' , ')'] 
+0

如果我有超過2個元素配對?如何分配它? 例如,如果配對具有[[firstTuple,secondTuple,...]':'paired = [0,14],(1,12),(3,10),(4,9)] –

+0

[(2,4),[6,9]]' – elegent

0

你需要有一種映射通過您列出與符號的值,然後循環,像這樣:

>>> unpaired = [1,3] 
>>> paired = [(2,4)] 
>>> map_of_symbols = {1: '.', 2: '(', 3: '.', 4: ')'} 
>>> values = sorted(unpaired+[i for x in paired for i in x]) 
>>> seen = [map_of_symbols[i] for i in values] 
>>> seen 
['.', '(', '.', ')'] 
相關問題