我有一套模式
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]
仅打印最后一项
答案 0 :(得分:3)
第一个解决方案基本上是“返回符合以下条件的所有(左,右)对”
第二个解决方案说“搜索一对符合以下条件的符号。一旦找到,就返回它”。因此只返回一个。我没有测试过这个,但我应该是遇到的第一个,而不是最后一个。
要修复它:不是返回第二个解决方案中找到的对,而是将其添加到解决方案数组中,并在for循环之后返回该数组。