Top.Mail.Ru

Перечень алгоритмов

16. Проверить, равны ли два списка одинаковой длины

Даны два списка:

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 )