📌  相关文章
📜  Python|检查一个列表是否包含在另一个列表中

📅  最后修改于: 2022-05-13 01:55:50.408000             🧑  作者: Mango

Python|检查一个列表是否包含在另一个列表中

给定两个列表 A 和 B,编写一个Python程序来检查列表 A 是否包含在列表 B 中而不破坏 A 的顺序。

例子:

Input : A = [1, 2], B = [1, 2, 3, 1, 1, 2, 2]
Output : True

Input : A = ['x', 'y', 'z'], B = ['x', 'a', 'y', 'x', 'b', 'z']
Output : False


方法#1:朴素的方法

一个简单的天真的方法是使用两个 for 循环并检查整个列表 A 是否包含在列表 B 中。如果在列表 A 中遇到这样的位置,则中断循环并返回 true,否则返回 false

# Python3 program to Check if a list is 
# contained in another list without breaking order
  
def removeElements(A, B):
    for i in range(len(B)-len(A)+1):
        for j in range(len(A)):
            if B[i + j] != A[j]:
                break
        else:
            return True
    return False
  
# Driver code
A = [1, 2]
B = [1, 2, 3, 1, 1, 2, 2]
print(removeElements(A, B))
输出:
True


方法#2:列表理解

一种更有效的方法是使用列表推导。我们首先用长度 A 初始化 'n'。现在使用 for 循环直到len(B)-n并检查每次迭代是否A == B[i:i+n]

# Python3 program to Remove elements of 
# list that repeated less than k times
  
def removeElements(A, B):
    n = len(A)
    return any(A == B[i:i + n] for i in range(len(B)-n + 1))
              
      
# Driver code
A = [1, 2]
B = [1, 2, 3, 1, 1, 2, 2]
print(removeElements(A, B))
输出:
True


方法#3:使用连接映射模块

这里我们使用join将两个列表连接到字符串,然后使用in运算符检查列表 A 是否包含在 B 中。

# Python3 program to Remove elements of 
# list that repeated less than k times
  
  
def removeElements(A, B):
    return ', '.join(map(str, A)) in ', '.join(map(str, B))
              
# Driver code
A = ['x', 'y', 'z']
B = ['x', 'a', 'y', 'x', 'b', 'z']
print(removeElements(A, B))
输出:
False