Top.Mail.Ru

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

17. Найти числа, которые есть в первом списке, и нет во втором

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

a = [ 1,2,3,4,5,6]

b = [7,8,9,1,2,3,11,12,12,3]

 

Способ 1. Использование двух циклов for

n = len(a)
m =
len(b)
c=[]
for i in range(n):
    
for j in range(m):
        
if a[i]== b[j]:
              
break
         else
:
            
if j == m-1:
                 c.append(a[i])
print(c)

# [4, 5, 6]
Временная сложность O (n * m)

 

Способ 2. Использование операции in

c=[]
for x in a:
    
if x not in b:
       c.append(x)
print(c)

# [4, 5, 6]
Временная сложность O (n)

 

Способ 3. Использование словаря dict()

s = dict()
for i in range(m):
   s[b[i]] =
1
c = []
for i in range(n):
  
if a[i] not in s.keys():
       c.append(a[i])
print(c)

# [4, 5, 6]
Временная сложность O(n)