---
tags: Python Advanced
---
# ❌ Практика за темами "Колекції та генератори"
:::info
Вирішення всіх завдань надіслати як посилання на репозиторій або папку в репозиторії
:::
## Базовий рівень
### Задача A: Видалення елементів зі списку
<!-- ### [Задача E: Удаление элементов из списка](https://kit.dots.org.ua/problems?id=2109) -->

::: spoiler Алгоритм
[](https://mermaid.live/edit#pako:eNqVkb1qwzAQx1_lqqmBhJCMhnZK1hJot8iDiOTGEMvGkaAlBJoO7VI69jnSDxOTts4rnN6oZzs0H1skpDvp_nc_fczYKJaKeew2FckYbnpcA7Xp-RA3WLhnXLpHLHDtN6DVuoRQJ9YM2_hBPXMLiuVw1fbrpCq4k3WOdG5BJXOaqRwIwBUuAb9oRSD8ofFJwFcgk-EvZT3U7NIeEDo7RPcIMTgQdithbE15ZlLle0oBdLeSkeEKcENOge_uDb9POheJIQzgDs4uYLBF17wK3deS3nFNZcu8J_fiN7hmTRapNBKhpFeflTmcmbGKFGceuVIFwk4MZ1zPSSqsia_v9Yh5JrWqyWwihVG9UNB_RcwLxGT6v9uXoYnT7eb8D6GC5dw)
:::
:::spoiler Розв'язок
<!--

```
ввести N
ввести список a с помощью генератора
ввести P
вывести a через пробел с помощью генератора с if i != P
```
```python=
N = int(input())
a = [int(s) for s in input().split()]
P = int(input())
print(' '.join([str(i) for i in a if i != P]))
```
-->
:::
### Задача B: Перенесення елемента на початок списку
<!-- ### [Задача B: Перенос элемента в начало списка](https://kit.dots.org.ua/problems?id=2110) -->

::: spoiler Алгоритм
[](https://mermaid.live/edit#pako:eNqVUrtuwjAU_ZUrTyBBURgzdIK1Qmo3zGCRUCKRh4IzVAipUKldqo79jpQSlQYKv2D_UU8c2gikDk3k-Pr63HvOcTxjw9Bxmc1uYxGN6abDA8IzrfXVQe31k0r1Uu1VPqhTs3lJXhAlst9SK7yZXmBvQ1etQVlkNiuYdYbTC7Tc4It2JEh9qJTUGisQqR3GOwhfCFOmvlB1X3IX8wmDVVG0zyh6J8C2AYaR1edMrQwkBXhjoKAA_YnHSmGuHwgqthi7Qo1eQi7pVxStsc6NiR31mhaShHiNnbLTooiooEEyRYsj3Wdp8E_b4iIKoxo61jk7moDy0kEii1M3PSuvgsBXnFIGaeqAYK_eIHH7r5P9oTIUhq0bOPj5uTGb6Uf9PKjzgDWY78a-8BxclVlRw5kcu77LmY3QcUcimUjOeDAHVCQyvL4LhsyWceI2WBI5QrodT-CS-cweicn0N9t1PBnGx-T8G7L0WF8)
:::
:::spoiler Розв'язок
<!--

```
ввести N
ввести список a с помощью генератора
ввести P
вставить в начало списка элемент с индексом P-1
и одновременно удалить его используя a.pop(P-1)
вывести a через пробел с помощью генератора
```
```python=
N = int(input())
a = [int(s) for s in input().split()]
P = int(input())
a.insert(0, a.pop(P-1))
print(' '.join([str(i) for i in a]))
```
-->
:::
### Задача C: Вставка та видалення елемента за номером
<!-- ### [Задача D: Вставка и удаление элемента по номеру](https://kit.dots.org.ua/problems?id=2108) -->

::: spoiler Алгоритм
[](https://mermaid.live/edit#pako:eNplks1qwkAUhV_lMqsKBonusuhKV4WitDvjYjCxCpqIThZFhGqhbkq763OkNsEQ_15h5o16MqYGbUIyc2fuuefLzcxY13dcZrGnCR_36bFue4RretOWR3lQKxmqpTzItFMiw7ilgTcORLsi17hjtcBeQveVzkmkN4s08ypPLVAywRvliJPcyJBkhAhGcofnB4YfhCGWe6heTt7ZeOFgFhbVK4vmRWJVJ_pjs42UBFah3AJAs7wWOCkC4MTYjMEBc7UEHakvYESIU828o6Zh5uVRs4CoXUG0ynRHEESQJ5DppAuwWg5WBZgWhRmgFsv1P7Cj7kUsoytGzdQig8ysl3t0a6U7t1efdHcGzZsQiOzH6T4UpJwyiS6-gQ8mB_mNz97-qbVKF2h4Do5EqnsSqzf13inZHiuzkTsZ8YGDAzTLNDYTfXfk2szC1HF7PBgKm9neHKk8EP7Ds9dllpgEbpkFY4cLtz7gOHojZvX4cHpebTgD4U_yxfkv9k1Q-g)
:::
:::spoiler Розв'язок
<!--

```
ввести N
ввести список a с помощью генератора
ввести P
удалить в списке a элемент с индексом P-1
ввести Q, K одним input
вставить в a перед элементом Q - 1 значение K
вывести a через пробел
```
```python=
N = int(input())
a = [int(s) for s in input().split()]
P = int(input())
del a[P-1]
(Q, K) = [int(s) for s in input().split()]
a.insert(Q - 1, K)
print(' '.join([str(i) for i in a]))
```
-->
:::
## Середній рівень
### Задача D: Середній бал з трьох предметів
<!-- ### [Задача B: Средний балл по трём предметам](https://kit.dots.org.ua/problems?id=2106) -->

::: spoiler Алгоритм
<!--
[](https://mermaid.live/edit#pako:eNpVUltL40AU_iuHeWqgbr28BXZB1CexgpenTFhCk-pAm4R08iCl4AX0ZVlhH_Z31FqxVlP_wpl_5DcTrRqYzORwvvNdMkPRyeJE-OKkiPJTOtqWKeEZNAJ-5YW54bG55AXPQ49WVn6RSvNSBy3-xxN-4ClWxZW5pXYrrIGuwbVm-VogRV7mqjegnxSrjm54TdrbPNg9_L21f9w-QnVDincg2h2smxXDoeXmiWU25zzDPqM24TjmR_OfJ6NRjUHvp6r1oCUFZEGYuXAQx03mludkLjByhjesED_ymCB-4WhesO5B9Lce0_B-DPKewi7FN1PrjuokSZeuArcFq2EIJ4FKdUN5TpMComYP1vwwXHoEuI6m1C5Gp3f2RbG5QuI2T3xB4lMtzap_gHsbeAX_T8R3iOKZeELomGJEhXRg1HqaW90fUX7NyZZ20hh_do4hFUZemz-hJ1PRFP2k6Ecqxj0YWogU-jTpJ1L4OMZJNyp7WgqZjtAalTo7PEs7wtdFmTRFmceRTrZVhBvUF3436g2W1Z1Y6ax4L47eAHCOEiA)
-->
:::
:::spoiler Розв'язок
<!--

```
вводим N
создаем пустой словарь pupils
присваиваем MARKS_COUNT значение 3
повторить N раз:
ввести pupil как список с помощью input().split()
pupils[pupil[0]] = [int(i) for i in pupil[1:]]
вывести ученика и его средний балл без перевода строки
```
```python=
N = int(input())
pupils = {}
MARKS_COUNT = 3
for _ in range(N):
pupil = input().split()
pupils[pupil[0]] = [int(i) for i in pupil[1:]]
print('%s %.2f' % (pupil[0],
sum(pupils[pupil[0]]) / MARKS_COUNT))
```
-->
:::
### Задача E: Середній бал по групі
<!-- ## [Задача A: Средний балл по группе](https://kit.dots.org.ua/problems?id=2105)
-->

::: spoiler Алгоритм
<!--
[](https://mermaid.live/edit#pako:eNqlk81q20AUhV9lmJVFnbpRvBIkUJqsSl1o0tWMKMKSk6HWD9JoUYwhSaHdlBhC6XMYN8Emrd1XuPNGPRrZqh2yq0HWcLnn3u8cSSPeT8OIe_w8D7ILdnYsE4Zf0RL0h1bmK03NNa3owXfY3t4RU0lWatGhW5rRPd3hWtLSTFiv49dC22Bb02xfSJ6VmRoW7JCFqq9bTpu9efnu9emHV2_f985QPZB8LUT7WuYKc4WlM6y_NDfmO_2mFTNX4FngHywsDvKPBaP5zjBwfKZf5gfNmomunThI89GockOzyou5xJxrWrAew3FK80oyHtca9P7z6YqO5OCAVUu0YNYNMxMw7ADRnKYMcazsGvDSTyy6qce0nOdFNlS4S74TU413HiVNTsLexAvfRzZCJbqlHMukoKi3i33P95vUIN54dGHyDgFM0PyE2-2onvTtruM_AI0NWCifPTtkj8lQxvpm6yM9DttJ1pXuf6J1a7RS25fPPpPF1lPZ0HZ6VcAbjO6OHLWTJMRb_YDZS0i_mG--IxPe5nGUx4EK8Q2MKonk-iKKI8k9HMNoEJRDLblMxmgNSp2efkr63NN5GbV5mYWBjo5VgK8n5t4gGBZN9SRUOs3XxfFfa7Vylg)
-->
:::
:::spoiler Розв'язок
<!--

```
вводим N
создаем пустой словарь pupils
присваиваем MARKS_COUNT значение 3
создаем список marks из MARKS_COUNT нулей
повторить N раз:
ввести pupil как список с помощью input().split()
pupils[pupil[0]] = [int(i) for i in pupil[1:]]
для i повторить MARKS_COUNT раз:
marks[i] += pupils[pupil[0]][i]
для i повторить MARKS_COUNT раз:
вывести f'{marks[i] / N}:.2f' без перевода строки (end=' ')
```
```python=
N = int(input())
pupils = {}
MARKS_COUNT = 3
marks = [0] * MARKS_COUNT
for _ in range(N):
pupil = input().split()
pupils[pupil[0]] = [int(i) for i in pupil[1:]]
for i in range(MARKS_COUNT):
marks[i] += pupils[pupil[0]][i]
for i in range(MARKS_COUNT):
print('%.2f' % (marks[i] / N), end = ' ')
```
-->
:::
### Задача F: Сортування за середнім балом
<!-- ### [Задача C: Сортировка по среднему баллу](https://kit.dots.org.ua/problems?id=2107) -->

::: spoiler Алгоритм
<!--
[](https://mermaid.live/edit#pako:eNpdU8tq20AU_ZVhVhbEMXF3ghZKk1VpCk260ogiIjkRWA_0WBRhsGNoN6WBLvwdrmvXqhOnv3Dnj3pm9LBcgTTDnXPuuefeUcFvItfjJr9NnPiOXZ-LkOFJexb9pWf5lZbynp5pZxus33_F_DDOM2tAP2hFGznDWckuB3ZF0ocaFsVnluBxHvvjlL1kls2Ae_f6w9urT2_ef7y8RuyF4DUNYE0aRUlRKFVaKU05pbLKz7Bd0lYuaDWZVBxgD_UMrYHgKOhQklZm8oF2TM6QssQXJhhtaclojb2SecL7C0LfqzQ94zSNxz5WwY8sDbXUrRc2nqwz01a2_DDr-YYuxgeUtYd2aw4szXZcF2wtvdY9LRntVTFHXa4LR5k4Q3iDdS8fWD_Ng16b3WCDbjNbLWg0WkPrSKpOuzruRjUfu2l-t7OIpFGSWRjFgtYKL6fyXs7R407GtBZW0CbLsCi0z0eUTTvo_IYH3Wcm57Ck7NC25gveGWjV5ijP9BXTEy07M1VmwF4c0iCMBv5pss8AnZ4y-gnco1o20KEnGNiDMpNzNda2zP9kL0IXV36nwEjzRX6zDRHyEx54SeD4Ln6QQjEEz-68wBPcxNb1Rk4-zgQX4QRQJ8-iq8_hDTezJPdOeB67Tuad-w5-rYCbI2ecttEL18-ipA5O_gGi1Zju)
-->
:::
:::spoiler Розв'язок
<!--

```
вводим N
создаем пустой список pupils
присваиваем MARKS_COUNT значение 3
повторить N раз:
ввести pupil как список с помощью input().split()
pupil[1:] = [int(i) for i in pupil[1:]]
добавить в начало pupil значение -sum(pupil[1:]) / MARKS_COUNT
добавить pupil в список pupils
отсортировать pupils
для каждого ученика из pupils:
вывести данные ученика и его ср. балл без минуса
```
```python=
N = int(input())
pupils = []
MARKS_COUNT = 3
for _ in range(N):
pupil = input().split()
pupil[1:] = [int(i) for i in pupil[1:]]
pupil.insert(0, -sum(pupil[1:]) / MARKS_COUNT)
pupils.append(pupil)
pupils.sort()
for p in pupils:
print('%s %s %.2f' %
(p[1],
' '.join([str(mark) for mark in p[2:]]),
-p[0]
))
```
-->
:::
## Підвищений рівень
### Задача G: Сума поліномів
<!-- ### [Задача G: Сумма полиномов](https://kit.dots.org.ua/problems?id=2111) -->

$$
\begin{multline}
P(x) = 2x^2+3x+1 \\
Q(x) = x^3+x^2+x+1 \\
R(x) = P(x) + Q(x) = x^3+3x^2+4x+2
\end{multline}
$$
::: spoiler Підказка
<!--
```
ввести N, P, M, Q
визначити довжину R як (максимальне між N та M) + 1
створити R довжиною length_R
для i повторити length_R раз:
R[i] = (P[i] за наявності) + (Q[i] за наявності)
поки length_R > 0 та R[length_R - 1] == 0:
зменшити length_R на 1
якщо length_R == 0:
вивести 0
інакше:
вивести перші length_R елементів R
```
-->
:::
:::spoiler Розв'язок
<!--

-->
:::
### Задача H: Злиття списків
<!-- ### [Задача H: Слияние списков](https://kit.dots.org.ua/problems?id=2112) -->

::: spoiler Підказка
<!--
```
ввести два списки
об'єднати два списки та відсортувати їх за допомогою функції sorted
```
-->
:::
:::spoiler Розв'язок
<!--

-->
:::
### Задача I: Простий стек
<!-- ### [Задача I: Простой стек](https://kit.dots.org.ua/problems?id=2122) -->


:::spoiler Розв'язок
<!--

-->
:::
### Задача K: Проста черга
<!-- ### [Задача K: Простая очередь](https://kit.dots.org.ua/problems?id=2124) -->


:::spoiler Розв'язок
<!--

-->
:::
### Задача L: Черга із захистом від помилок
<!-- ### [Задача L: Очередь с защитой от ошибок](https://kit.dots.org.ua/problems?id=2125) -->

:::spoiler Розв'язок
<!--

-->
:::
### Задача M: Простий дек
<!-- ### [Задача M: Простой дек](https://kit.dots.org.ua/problems?id=2126) -->


### Задача N: Простий дек із захистом від помилок
<!-- ### [Задача M: Простой дек](https://kit.dots.org.ua/problems?id=2127) -->

---
(c) Яценко Р.М., 2018-2025 [](http://kit.kh.ua/)