如何检查B的完全匹配是否以相同的连续顺序出现在A中?在下面的示例中,A = [0, 321, 99, 0, 3, 0, 2, 0]
以完全相同的方式出现在A中:
99, 3, 2
A失败的例子是:
if B in A:
print("yes")
else:
print("NO")
由于 spaceship cars boats "subway train" rocket bicycle "18 wheeler"
元素不会连续出现。
我尝试过:
words = string.split()
这失败了。
谢谢大家, 杰马
答案 0 :(得分:2)
def consecutive_in(B,A):
return B in (A[i:i+len(B)] for i in range(len(A)))
答案 1 :(得分:1)
您可以将any
与生成器表达式一起使用,将所有长度为b
的切片与b
进行比较:
>>> a = [0, 3, 123, 0, 99, 3, 2, 1, 2, 33, 1, 76]
>>> b = [99, 3, 2]
>>> any(b == a[i:i+len(b)] for i in range(len(a) - len(b) + 1))
True
>>> a = [0, 321, 99, 0, 3, 0, 2, 0]
>>> any(b == a[i:i+len(b)] for i in range(len(a) - len(b) + 1))
False
range(len(a) - len(b) + 1)
返回与b
长度相同的子序列的所有可能起始位置。 b == a[i:i+len(b)]
从索引b
开始创建一个长度为i
的列表,并将其与b
进行比较,得到一个布尔值。如果所有生成的布尔值均为any
或True
,则True
将返回False
,以防所有值均为False
。