如何通过保留顺序来检查python中的列表是否是另一个列表的一部分。例:
a = [3, 4, 1, 2, 5]
b = [4, 1, 2]
Answer is True
a = [3, 4, 1, 0, 2, 5]
b = [4, 1, 2]
Answer is False as the order is not matched
这可以使用python列表相等来解决,比较所有位置的子列表:
is_b_sublist_of_a = any(b == a[i:i+len(b)] for i in range(len(a)))
表达式a[i:i+len(b)]
创建一个长度为b
的列表,从第i
个位置开始。此表达式是针对a
中的所有位置计算的。如果任何比较返回True
,则any
表达式也将True
,否则False
。
使用此函数:
def is_a_in_x(A, X):
for i in range(len(X) - len(A) + 1):
if A == X[i:i+len(A)]: return True
return False