【问题标题】:Is there any difference betwwen these two forms of for-loop? [duplicate]这两种形式的for循环有什么区别吗? [复制]
【发布时间】:2014-12-04 10:27:36
【问题描述】:

我有一套模式

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]

它只打印最后一项

【问题讨论】:

    标签: python string for-loop iteration overlap


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-13
      • 2020-01-12
      • 2013-11-14
      相关资源
      最近更新 更多