В каком месте правильно установить функцию? Как правильно зациклить код, с 17 строки по 27?

Подскажите пожалуйста, как зациклить данную функцию? И как сделать её в виде функции? Вот задание: "Напишите функцию, которая принимает два списка и выводит все элементы первого, которых нет во втором." Вот то, что у меня получилось:

a = ['A', '8', '3', 'V', '5']
print (a)
b = ['A', '3', '5', '3', '9']
print (b)
c = len(a)-1
d = len(b)-1
print(c, d)
x = 0
p = 0
for i in range(0, d):
         if b[i] == a[c]:
             x = x+1  
print('Символ %s встречается во второй строке %s раз' %(a[c], x))
if x > 0:
   del a[c] 
   #d = d-1 
   c = c-1
else: 
   i = 0
   c = c-1       
print('Символы первой строки, которые не встречаются во второй: ')
print(a) 

Буду очень благодарен, если кто-нибудь поможет


Ответы (1 шт):

Автор решения: Arty

Ниже реализовал искомую функцию f() в самом простом виде.

Если нужна скорость, то раскомментируйте строку #b = set(b), это позволит быстрее искать внутри массива b. Если нужна простота то удалите строку #b = set(b), будет работать просто медленней, например если это задача на первых начальных уроках изучения Питона то может ещё использование set() не изучается.

Попробовать онлайн!

def f(a, b):
    #b = set(b)
    return [e for e in a if e not in b]

print(f(['A', '8', '3', 'V', '5'], ['A', '3', '5', '3', '9']))

Вывод:

['8', 'V']

Если доработать именно ваш код и алгоритм, то получится следующее.

Попробовать онлайн!

def f(a, b):
    a = list(a)
    for i in range(len(a) - 1, -1, -1):
        x = 0
        for j in range(len(b)):
            if a[i] == b[j]:
                x += 1
        print('Символ %s встречается во второй строке %s раз' % (a[i], x))
        if x > 0:
            del a[i] 
    print('Символы первой строки, которые не встречаются во второй: ')
    print(a)

a = ['A', '8', '3', 'V', '5']
print(a)
b = ['A', '3', '5', '3', '9']
print(b)
f(a, b)

Вывод:

['A', '8', '3', 'V', '5']
['A', '3', '5', '3', '9']
Символ 5 встречается во второй строке 1 раз
Символ V встречается во второй строке 0 раз
Символ 3 встречается во второй строке 2 раз
Символ 8 встречается во второй строке 0 раз
Символ A встречается во второй строке 1 раз
Символы первой строки, которые не встречаются во второй: 
['8', 'V']
→ Ссылка