while循环python中的while循环

劳拉·奎因(Laura Quinn)

我正在尝试在while循环内编写一个while循环,由于某种原因,它无法正常工作。我知道我可能在这里错过了一些琐碎的事情,但是我只是不明白它是如何工作的!

循环的目的是比较两个字符串,以查看它们是否包含相同的任何3个连续单词。我首先将两个字符串分成各自的3个单词字符串组合的列表,然后将它们存储在列表中的string和stringscompare。然后,我遍历字符串中的每个3字字符串,比较字符串中的每个3字字符串。

对于某些人来说,这似乎很漫长,但是我只是一个新手程序员,任何改进将不胜感激。

因此,当前,第二个while循环一直贯穿整个过程,但是对于字符串中的第一个字符串,第一个while循环仅循环一次。如果字符串匹配,我希望它可以从两个循环中断开,但是这些循环也位于for循环中,这是我不希望其中断的更大的循环。

例如

'这是一个字符串'
'这是另一个字符串'-不匹配
'这是一个字符串列表'-匹配'this is a'
'该列表是字符串'-应该匹配'is a string'但当前不匹配

strings = <list of 3 word strings> [...,...,...]
stringscompare = <list of 3 word strings to compare>
v=0, x=0
while v < len(strings) and stop == False:
    while x < len(stringscompare) and stop == False:
        if re.search(strings[v], stringscompare[x]):
            same.append(dict)
            stop = True
        x += 1
    v +=1
马丁·彼得斯(Martijn Pieters)

您永远不会x在外循环内复位结果,它将始终等于或大于len(stringscompare)外部循环的第一次迭代之后。

其设置为0 外环:

v = 0
while v < len(strings) and stop == False:
    x = 0
    while x < len(stringscompare) and stop == False:

其他观察:

不要stop == False在哪里使用not stop

您可以使用一个for循环,然后中断两次:

for s in strings:
    for sc in stringscompare:
        if re.search(s, sc):
            same.append(dict)
            break
    else:
        continue
    # only reached if the inner loop broke out
    break

any()与生成器表达式一起使用以查找第一个匹配项:

 if any(re.search(s, sc) for s in strings for sc in stringscompare):
     same.append(dict)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章