2014-12-04 45 views
-1

我已经设置模式这两种形式的for-loop有什么不同吗?

ATGCG GCATG CATGC AGGCA GGCAT

,我需要找到它们之间的重叠。我使用这个功能,它能够正常工作:

def get_overlap(patterns): 
    n = len(patterns[0])-1 
    return [(left,right) for left,right in product(patterns,patterns) if left != right and left.endswith(right[:n])] 

我的问题是:当我使用普通的for循环形式,为什么它在所有的模式不循环?

for left, right in product(patterns, patterns): 
    if left != right and left.endswith(right[:n]): 
     return [left, right] 

它打印的最后一个项目只

回答

3

第一个解决方案基本上说“返回符合以下条件的所有(左,右)对”

第二个解决方案说“寻找一对,符合以下标准,只要找到一个,就返回“。因此只有一个被返回。我没有测试过这个,但我应该是第一个遇到的,而不是最后一个。

解决方法:不要返回第二个解决方案中找到的一对,将它添加到解决方案数组中,然后在for循环之后返回该数组。

+0

谢谢@misch – marjamil 2014-12-04 19:19:24

相关问题