2015-12-05 43 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 
['.', '(', '.', ')'] 
相关问题