2014-12-04 5 views
-1

는 나는 내가 그들 사이의 중복을 찾아야 패턴 for 루프의 두 가지 형식간에 차이가 있습니까?

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 left, right in product(patterns, patterns): 
    if left != right and left.endswith(right[:n]): 
     return [left, right] 

는 마지막 항목 첫 번째 솔루션은 기본적으로 말합니다 만

답변

3

을 인쇄 두 번째 솔루션은 말한다

"다음 기준과 일치하는 모든 (왼쪽, 오른쪽) 쌍을 반환" "한 쌍을 검색 다음 기준과 일치합니다. 발견되면 즉시 반환하십시오. " 따라서 하나만 반환됩니다. 나는 이것을 시험하지는 않았지만, 나는 그것이 처음 만난 것이지, 마지막 것이 아닌 것이어야한다.

해결 방법 : 두 번째 솔루션에있는 쌍을 반환하는 대신 솔루션 배열에 추가하고 for 루프 다음에 해당 배열을 반환하십시오.

+0

감사합니다. @misch – marjamil

관련 문제