--- tags: Python Advanced --- # ❌ Практика за темами "Колекції та генератори" :::info Вирішення всіх завдань надіслати як посилання на репозиторій або папку в репозиторії ::: ## Базовий рівень ### Задача A: Видалення елементів зі списку <!-- ### [Задача E: Удаление элементов из списка](https://kit.dots.org.ua/problems?id=2109) --> ![](https://hackmd.io/_uploads/HJRhLInk6.png) ::: spoiler Алгоритм [![](https://mermaid.ink/img/pako:eNqVkb1qwzAQx1_lqqmBhJCMhnZK1hJot8iDiOTGEMvGkaAlBJoO7VI69jnSDxOTts4rnN6oZzs0H1skpDvp_nc_fczYKJaKeew2FckYbnpcA7Xp-RA3WLhnXLpHLHDtN6DVuoRQJ9YM2_hBPXMLiuVw1fbrpCq4k3WOdG5BJXOaqRwIwBUuAb9oRSD8ofFJwFcgk-EvZT3U7NIeEDo7RPcIMTgQdithbE15ZlLle0oBdLeSkeEKcENOge_uDb9POheJIQzgDs4uYLBF17wK3deS3nFNZcu8J_fiN7hmTRapNBKhpFeflTmcmbGKFGceuVIFwk4MZ1zPSSqsia_v9Yh5JrWqyWwihVG9UNB_RcwLxGT6v9uXoYnT7eb8D6GC5dw?type=png)](https://mermaid.live/edit#pako:eNqVkb1qwzAQx1_lqqmBhJCMhnZK1hJot8iDiOTGEMvGkaAlBJoO7VI69jnSDxOTts4rnN6oZzs0H1skpDvp_nc_fczYKJaKeew2FckYbnpcA7Xp-RA3WLhnXLpHLHDtN6DVuoRQJ9YM2_hBPXMLiuVw1fbrpCq4k3WOdG5BJXOaqRwIwBUuAb9oRSD8ofFJwFcgk-EvZT3U7NIeEDo7RPcIMTgQdithbE15ZlLle0oBdLeSkeEKcENOge_uDb9POheJIQzgDs4uYLBF17wK3deS3nFNZcu8J_fiN7hmTRapNBKhpFeflTmcmbGKFGceuVIFwk4MZ1zPSSqsia_v9Yh5JrWqyWwihVG9UNB_RcwLxGT6v9uXoYnT7eb8D6GC5dw) ::: :::spoiler Розв'язок <!-- ![](https://i.imgur.com/SjJjyVR.png) ``` ввести 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) --> ![](https://hackmd.io/_uploads/BJB_PL2kp.png) ::: spoiler Алгоритм [![](https://mermaid.ink/img/pako:eNqVUrtuwjAU_ZUrTyBBURgzdIK1Qmo3zGCRUCKRh4IzVAipUKldqo79jpQSlQYKv2D_UU8c2gikDk3k-Pr63HvOcTxjw9Bxmc1uYxGN6abDA8IzrfXVQe31k0r1Uu1VPqhTs3lJXhAlst9SK7yZXmBvQ1etQVlkNiuYdYbTC7Tc4It2JEh9qJTUGisQqR3GOwhfCFOmvlB1X3IX8wmDVVG0zyh6J8C2AYaR1edMrQwkBXhjoKAA_YnHSmGuHwgqthi7Qo1eQi7pVxStsc6NiR31mhaShHiNnbLTooiooEEyRYsj3Wdp8E_b4iIKoxo61jk7moDy0kEii1M3PSuvgsBXnFIGaeqAYK_eIHH7r5P9oTIUhq0bOPj5uTGb6Uf9PKjzgDWY78a-8BxclVlRw5kcu77LmY3QcUcimUjOeDAHVCQyvL4LhsyWceI2WBI5QrodT-CS-cweicn0N9t1PBnGx-T8G7L0WF8?type=png)](https://mermaid.live/edit#pako:eNqVUrtuwjAU_ZUrTyBBURgzdIK1Qmo3zGCRUCKRh4IzVAipUKldqo79jpQSlQYKv2D_UU8c2gikDk3k-Pr63HvOcTxjw9Bxmc1uYxGN6abDA8IzrfXVQe31k0r1Uu1VPqhTs3lJXhAlst9SK7yZXmBvQ1etQVlkNiuYdYbTC7Tc4It2JEh9qJTUGisQqR3GOwhfCFOmvlB1X3IX8wmDVVG0zyh6J8C2AYaR1edMrQwkBXhjoKAA_YnHSmGuHwgqthi7Qo1eQi7pVxStsc6NiR31mhaShHiNnbLTooiooEEyRYsj3Wdp8E_b4iIKoxo61jk7moDy0kEii1M3PSuvgsBXnFIGaeqAYK_eIHH7r5P9oTIUhq0bOPj5uTGb6Uf9PKjzgDWY78a-8BxclVlRw5kcu77LmY3QcUcimUjOeDAHVCQyvL4LhsyWceI2WBI5QrodT-CS-cweicn0N9t1PBnGx-T8G7L0WF8) ::: :::spoiler Розв'язок <!-- ![](https://i.imgur.com/U3S0AkZ.png) ``` ввести 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) --> ![](https://hackmd.io/_uploads/Hk5gYL2Jp.png) ::: spoiler Алгоритм [![](https://mermaid.ink/img/pako:eNplks1qwkAUhV_lMqsKBonusuhKV4WitDvjYjCxCpqIThZFhGqhbkq763OkNsEQ_15h5o16MqYGbUIyc2fuuefLzcxY13dcZrGnCR_36bFue4RretOWR3lQKxmqpTzItFMiw7ilgTcORLsi17hjtcBeQveVzkmkN4s08ypPLVAywRvliJPcyJBkhAhGcofnB4YfhCGWe6heTt7ZeOFgFhbVK4vmRWJVJ_pjs42UBFah3AJAs7wWOCkC4MTYjMEBc7UEHakvYESIU828o6Zh5uVRs4CoXUG0ynRHEESQJ5DppAuwWg5WBZgWhRmgFsv1P7Cj7kUsoytGzdQig8ysl3t0a6U7t1efdHcGzZsQiOzH6T4UpJwyiS6-gQ8mB_mNz97-qbVKF2h4Do5EqnsSqzf13inZHiuzkTsZ8YGDAzTLNDYTfXfk2szC1HF7PBgKm9neHKk8EP7Ds9dllpgEbpkFY4cLtz7gOHojZvX4cHpebTgD4U_yxfkv9k1Q-g?type=png)](https://mermaid.live/edit#pako:eNplks1qwkAUhV_lMqsKBonusuhKV4WitDvjYjCxCpqIThZFhGqhbkq763OkNsEQ_15h5o16MqYGbUIyc2fuuefLzcxY13dcZrGnCR_36bFue4RretOWR3lQKxmqpTzItFMiw7ilgTcORLsi17hjtcBeQveVzkmkN4s08ypPLVAywRvliJPcyJBkhAhGcofnB4YfhCGWe6heTt7ZeOFgFhbVK4vmRWJVJ_pjs42UBFah3AJAs7wWOCkC4MTYjMEBc7UEHakvYESIU828o6Zh5uVRs4CoXUG0ynRHEESQJ5DppAuwWg5WBZgWhRmgFsv1P7Cj7kUsoytGzdQig8ysl3t0a6U7t1efdHcGzZsQiOzH6T4UpJwyiS6-gQ8mB_mNz97-qbVKF2h4Do5EqnsSqzf13inZHiuzkTsZ8YGDAzTLNDYTfXfk2szC1HF7PBgKm9neHKk8EP7Ds9dllpgEbpkFY4cLtz7gOHojZvX4cHpebTgD4U_yxfkv9k1Q-g) ::: :::spoiler Розв'язок <!-- ![](https://i.imgur.com/X1ijGxR.png) ``` ввести 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) --> ![](https://hackmd.io/_uploads/rkjsK8nJp.png) ::: spoiler Алгоритм <!-- [![](https://mermaid.ink/img/pako:eNpVUltL40AU_iuHeWqgbr28BXZB1CexgpenTFhCk-pAm4R08iCl4AX0ZVlhH_Z31FqxVlP_wpl_5DcTrRqYzORwvvNdMkPRyeJE-OKkiPJTOtqWKeEZNAJ-5YW54bG55AXPQ49WVn6RSvNSBy3-xxN-4ClWxZW5pXYrrIGuwbVm-VogRV7mqjegnxSrjm54TdrbPNg9_L21f9w-QnVDincg2h2smxXDoeXmiWU25zzDPqM24TjmR_OfJ6NRjUHvp6r1oCUFZEGYuXAQx03mludkLjByhjesED_ymCB-4WhesO5B9Lce0_B-DPKewi7FN1PrjuokSZeuArcFq2EIJ4FKdUN5TpMComYP1vwwXHoEuI6m1C5Gp3f2RbG5QuI2T3xB4lMtzap_gHsbeAX_T8R3iOKZeELomGJEhXRg1HqaW90fUX7NyZZ20hh_do4hFUZemz-hJ1PRFP2k6Ecqxj0YWogU-jTpJ1L4OMZJNyp7WgqZjtAalTo7PEs7wtdFmTRFmceRTrZVhBvUF3436g2W1Z1Y6ax4L47eAHCOEiA?type=png)](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 Розв'язок <!-- ![](https://i.imgur.com/Or1NOkv.png) ``` вводим 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) --> ![](https://hackmd.io/_uploads/S1NSq8n1p.png) ::: spoiler Алгоритм <!-- [![](https://mermaid.ink/img/pako:eNqlk81q20AUhV9lmJVFnbpRvBIkUJqsSl1o0tWMKMKSk6HWD9JoUYwhSaHdlBhC6XMYN8Emrd1XuPNGPRrZqh2yq0HWcLnn3u8cSSPeT8OIe_w8D7ILdnYsE4Zf0RL0h1bmK03NNa3owXfY3t4RU0lWatGhW5rRPd3hWtLSTFiv49dC22Bb02xfSJ6VmRoW7JCFqq9bTpu9efnu9emHV2_f985QPZB8LUT7WuYKc4WlM6y_NDfmO_2mFTNX4FngHywsDvKPBaP5zjBwfKZf5gfNmomunThI89GockOzyou5xJxrWrAew3FK80oyHtca9P7z6YqO5OCAVUu0YNYNMxMw7ADRnKYMcazsGvDSTyy6qce0nOdFNlS4S74TU413HiVNTsLexAvfRzZCJbqlHMukoKi3i33P95vUIN54dGHyDgFM0PyE2-2onvTtruM_AI0NWCifPTtkj8lQxvpm6yM9DttJ1pXuf6J1a7RS25fPPpPF1lPZ0HZ6VcAbjO6OHLWTJMRb_YDZS0i_mG--IxPe5nGUx4EK8Q2MKonk-iKKI8k9HMNoEJRDLblMxmgNSp2efkr63NN5GbV5mYWBjo5VgK8n5t4gGBZN9SRUOs3XxfFfa7Vylg?type=png)](https://mermaid.live/edit#pako:eNqlk81q20AUhV9lmJVFnbpRvBIkUJqsSl1o0tWMKMKSk6HWD9JoUYwhSaHdlBhC6XMYN8Emrd1XuPNGPRrZqh2yq0HWcLnn3u8cSSPeT8OIe_w8D7ILdnYsE4Zf0RL0h1bmK03NNa3owXfY3t4RU0lWatGhW5rRPd3hWtLSTFiv49dC22Bb02xfSJ6VmRoW7JCFqq9bTpu9efnu9emHV2_f985QPZB8LUT7WuYKc4WlM6y_NDfmO_2mFTNX4FngHywsDvKPBaP5zjBwfKZf5gfNmomunThI89GockOzyou5xJxrWrAew3FK80oyHtca9P7z6YqO5OCAVUu0YNYNMxMw7ADRnKYMcazsGvDSTyy6qce0nOdFNlS4S74TU413HiVNTsLexAvfRzZCJbqlHMukoKi3i33P95vUIN54dGHyDgFM0PyE2-2onvTtruM_AI0NWCifPTtkj8lQxvpm6yM9DttJ1pXuf6J1a7RS25fPPpPF1lPZ0HZ6VcAbjO6OHLWTJMRb_YDZS0i_mG--IxPe5nGUx4EK8Q2MKonk-iKKI8k9HMNoEJRDLblMxmgNSp2efkr63NN5GbV5mYWBjo5VgK8n5t4gGBZN9SRUOs3XxfFfa7Vylg) --> ::: :::spoiler Розв'язок <!-- ![](https://i.imgur.com/z0ev1JI.png) ``` вводим 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) --> ![](https://hackmd.io/_uploads/BJSKoI2kT.png) ::: spoiler Алгоритм <!-- [![](https://mermaid.ink/img/pako:eNpdU8tq20AU_ZVhVhbEMXF3ghZKk1VpCk260ogiIjkRWA_0WBRhsGNoN6WBLvwdrmvXqhOnv3Dnj3pm9LBcgTTDnXPuuefeUcFvItfjJr9NnPiOXZ-LkOFJexb9pWf5lZbynp5pZxus33_F_DDOM2tAP2hFGznDWckuB3ZF0ocaFsVnluBxHvvjlL1kls2Ae_f6w9urT2_ef7y8RuyF4DUNYE0aRUlRKFVaKU05pbLKz7Bd0lYuaDWZVBxgD_UMrYHgKOhQklZm8oF2TM6QssQXJhhtaclojb2SecL7C0LfqzQ94zSNxz5WwY8sDbXUrRc2nqwz01a2_DDr-YYuxgeUtYd2aw4szXZcF2wtvdY9LRntVTFHXa4LR5k4Q3iDdS8fWD_Ng16b3WCDbjNbLWg0WkPrSKpOuzruRjUfu2l-t7OIpFGSWRjFgtYKL6fyXs7R407GtBZW0CbLsCi0z0eUTTvo_IYH3Wcm57Ck7NC25gveGWjV5ijP9BXTEy07M1VmwF4c0iCMBv5pss8AnZ4y-gnco1o20KEnGNiDMpNzNda2zP9kL0IXV36nwEjzRX6zDRHyEx54SeD4Ln6QQjEEz-68wBPcxNb1Rk4-zgQX4QRQJ8-iq8_hDTezJPdOeB67Tuad-w5-rYCbI2ecttEL18-ipA5O_gGi1Zju?type=png)](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 Розв'язок <!-- ![](https://hackmd.io/_uploads/SJf17Yrla.png) ``` вводим 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) --> ![](https://hackmd.io/_uploads/ByoL2IhJp.png) $$ \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 Розв'язок <!-- ![](https://hackmd.io/_uploads/r1HOzYrep.png) --> ::: ### Задача H: Злиття списків <!-- ### [Задача H: Слияние списков](https://kit.dots.org.ua/problems?id=2112) --> ![](https://hackmd.io/_uploads/HJfK383y6.png) ::: spoiler Підказка <!-- ``` ввести два списки об'єднати два списки та відсортувати їх за допомогою функції sorted ``` --> ::: :::spoiler Розв'язок <!-- ![](https://hackmd.io/_uploads/ryHK3YSxa.png) --> ::: ### Задача I: Простий стек <!-- ### [Задача I: Простой стек](https://kit.dots.org.ua/problems?id=2122) --> ![](https://content.hneu.edu.ua/uploads/upload_2e632858e30fe724ba1935e2479a3d34.png) ![](https://hackmd.io/_uploads/rkWZTUhyp.png) :::spoiler Розв'язок <!-- ![](https://hackmd.io/_uploads/SywY7Frxp.png) --> ::: ### Задача K: Проста черга <!-- ### [Задача K: Простая очередь](https://kit.dots.org.ua/problems?id=2124) --> ![](https://content.hneu.edu.ua/uploads/upload_ca98bf3a76f67f60282bde69131ae558.png) ![](https://hackmd.io/_uploads/ryiBALh1p.png) :::spoiler Розв'язок <!-- ![](https://hackmd.io/_uploads/rkUhQYBx6.png) --> ::: ### Задача L: Черга із захистом від помилок <!-- ### [Задача L: Очередь с защитой от ошибок](https://kit.dots.org.ua/problems?id=2125) --> ![](https://hackmd.io/_uploads/BJuaCUnkp.png) :::spoiler Розв'язок <!-- ![](https://hackmd.io/_uploads/BkwkejBga.png) --> ::: ### Задача M: Простий дек <!-- ### [Задача M: Простой дек](https://kit.dots.org.ua/problems?id=2126) --> ![](https://content.hneu.edu.ua/uploads/upload_ac3ec2fbea7efa8c3326779a34e0e374.png) ![](https://hackmd.io/_uploads/Hyfhkv2kp.png) ### Задача N: Простий дек із захистом від помилок <!-- ### [Задача M: Простой дек](https://kit.dots.org.ua/problems?id=2127) --> ![](https://hackmd.io/_uploads/H17geD2yp.png) --- (c) Яценко Р.М., 2018-2025 [![kit](https://i.imgur.com/Kh901c1.png =10%x)](http://kit.kh.ua/)