В каком месте правильно установить функцию? Как правильно зациклить код, с 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 шт):
Ниже реализовал искомую функцию 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']