我有两组同步的列表,如下所示: (所谓synchronized,我的意思是cal中的'A'属于cpos中的12个,mal中的'A'属于mpos中的11个)
集合1
cpos = [12, 13, 14, 15]
cal = ['A', 'T', 'C', 'G']
集合2
mpos = [11, 12, 13, 16]
mal = ['A', 'T', 'T', 'G']
我想在这两个集合之间找到一个匹配,在这个例子中只有一个匹配,cpos&cal中的13T和mpos&mal中的13T
我编写了这个脚本,但它似乎只通过索引比较值,因为匹配字符串是空的:
mat = []
for i in xrange(len(cpos)):
if mpos[i] == cpos[i] and mal[i] == cal[i]:
mat.append(cpos[i])
这就是我想要的:
mat = [13]
有什么办法解决这个问题吗?你知道吗
现在只按索引进行比较,即只在所有列表中的
i
位置进行比较。但cpos&cal中的13T位于1
位置,mpos&mal中的13T位于2
位置。这意味着if语句将不为true,mat
将为空。你知道吗您可以在示例中添加第二个循环:
..尽管这是非常低效的,如thg435答案中的计时所示
结果:
根据以下@Janne Karila的评论,以下将更有效率:
时间安排:
相关问题 更多 >
编程相关推荐