Даны два списка:
a = [1, 2, 3, 4, 5]
b = [2, 1, 5, 3, 4]
Способ 1. Использование сортировки sort()
Если не важен порядок элементов, то используем сортировку.
n = len(a)
m = len(b)
flag = True
a.sort()
b.sort()
if n!=m:
flag = False
for i in range(n):
if (a[i] != b[i]):
flag = False
break
print(flag)
# True
Временная сложность: O (n * log n )
Способ 2. Используем множества set()
c = set(a) & set(b)
if len(c) ==len(a):
print("Yes")
else:
print("No")
#Yes
Временная сложность O (n * m)
Способ 3. Используем пересечение множеств - intersection().
Метод intersection () (пересечение) возвращает новое множество, содержащее все элементы, которые есть и в первом множестве, и во втором.
c = set(a).intersection(b)
if len(c) ==len(a):
print("Yes")
else:
print("No")
# Yes
Временная сложность O (n * m)
Способ 4. Используем Функция zip
Функция zip используется для перебора сразу нескольких объектов одновременно
Если не важен порядок элементов, то используем сортировку. Если порядок элементов важен, то сортировку не используем.
a.sort()
b.sort()
c = [i for i, j in zip(a, b) if i == j]
print(c)
if len(c) == len(a):
print("Yes")
else:
print("No")
# Yes
Временная сложность: O (n * log n )
Способ 5. Использование генератора
c = [x for x in a if x in b]
if len(c) == len(a):
print("Yes")
else:
print("No")
#Yes
Временная сложность: O (n*m )