Страшный код

Что нужно сделать

Вашему другу, который тоже начал изучать Python, преподаватель дал такую задачу: есть три списка — основной и два побочных. В основном лежат элементы [1, 5, 3], а в побочных — [1, 5, 1, 5] и [1, 3, 1, 5, 3, 3] соответственно.

Первый побочный закидывается в основной, там считается количество цифр 5, количество выводится на экран, и затем они удаляются из основного списка. После этого в основной закидывается второй побочный список, там считается количество цифр 3 и выводится на экран. В конце также выводится и сам список.

Из интереса вы попросили вашего друга показать код его программы и поняли, что сделали это не зря — то, что вы увидели, повергло вас в шок и ужас. Вот сам код:

a = [1, 5, 3]
b = [1, 5, 1, 5]
c = [1, 3, 1, 5, 3, 3]
for i in b:
    a.append(i)
t = 0
for i in a:
    if i == 5:
        t += 1
print(t)
d = []
for i in a:
    if i != 5:
        d.append(i)
for i in c:
    d.append(i)
t = 0
for i in d:
    if i == 3:
        t += 1
print(t)
print(d)

Используя знания о методах списков, а также о стиле программирования, помогите другу переписать программу. Не используйте дополнительные списки.

Результат работы программы:
Кол-во цифр 5 при первом объединении: 3
Кол-во цифр 3 при втором объединении: 4
Итоговый список: [1, 3, 1, 1, 1, 3, 1, 5, 3, 3]

Что оценивается

  • Результат вычислений корректен.
  • Формат вывода соответствует примеру.
  • Переменные и функции имеют значащие имена, не только a, b, c, d
a = [1, 5, 3]
b = [1, 5, 1, 5]
c = [1, 3, 1, 5, 3, 3]

a.extend(b)
print(f'Количество цифр 5 при первом объединении: {a.count(5)}')
a.extend(c)
print(f'Количество цифр 3 при втором объединении: {a.count(3)}')
print(f'Итоговый список: {a}')