这两种形式的for循环之间有什么区别吗?

时间:2014-12-04 10:27:37

标签: python string for-loop iteration overlap

我有一套模式

  

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]

仅打印最后一项

1 个答案:

答案 0 :(得分:3)

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

第二个解决方案说“搜索一对符合以下条件的符号。一旦找到,就返回它”。因此只返回一个。我没有测试过这个,但我应该是遇到的第一个,而不是最后一个。

要修复它:不是返回第二个解决方案中找到的对,而是将其添加到解决方案数组中,并在for循环之后返回该数组。