我正在尝试在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
您永远不会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] 删除。
我来说两句