Списки в Python: чим відрізняються append() і extend() та коли їх використовувати

Списки в Python: чим відрізняються append() і extend() та коли їх використовувати

  • 28 липня
  • читати 11 хв
Оксана Томашенко
Оксана Томашенко Content Manager у Hillel IT School

Під час вивчення Python одними з перших структур даних, з якими знайомляться майбутні розробники, є списки. Вони використовуються практично в кожному проєкті: від простих навчальних програм до вебзастосунків, систем автоматизації та аналізу даних. Саме тому розуміння принципів роботи зі списками є важливою складовою базових знань Python.

Одне з найпоширеніших запитань серед новачків стосується методів append() та extend(). На перший погляд вони виконують однакову функцію — додають нові дані до списку. Проте між ними є суттєва різниця, яка впливає на результат роботи програми. Неправильний вибір методу може призвести до появи вкладених списків або неочікуваної структури даних.

У цій статті розглянемо, що таке списки в Python, як працюють методи append() і extend(), чим вони відрізняються, а також які помилки найчастіше трапляються під час роботи з ними.

Що таке список у Python і навіщо він потрібен

Список (list) — це одна з основних структур даних у Python, яка дозволяє зберігати кілька елементів в одному об’єкті. На відміну від звичайної змінної, список може містити десятки, сотні або навіть тисячі значень. При цьому вони можуть бути як одного, так і різних типів.

Наприклад:

students = ["Anna", "Oleh", "Maria"]

У цьому прикладі змінна students містить список із трьох імен.

Списки використовують для роботи з будь-якими наборами даних:

  • списками користувачів;
  • товарами в інтернет-магазині;
  • повідомленнями;
  • результатами обчислень;
  • файлами;
  • задачами в планувальнику;
  • даними, отриманими з API або баз даних.

Головна перевага списків полягає в тому, що вони є змінюваними (mutable). Це означає, що після створення списку ви можете додавати нові елементи, видаляти непотрібні або змінювати вже існуючі без створення нового об’єкта.

ВластивістьСписок Python
Зберігає порядок елементів
Дозволяє дублікати
Може містити різні типи даних
Змінюється після створення

Однією з найпоширеніших операцій під час роботи зі списками є додавання нових елементів. Саме для цього в Python існують методи append() і extend().

Якщо ви лише починаєте вивчати append python, важливо одразу зрозуміти, що ці методи вирішують різні задачі. Вони мають схожий синтаксис, але працюють за різними принципами.

Наприклад, уявімо застосунок для ведення списку покупок. Щоразу, коли користувач додає новий товар, програма повинна зберегти його в загальному списку. У такому випадку найзручніше використовувати метод append(), адже товари додаються по одному.

Як працює метод append()у Python

Метод append() додає один елемент у кінець списку. Саме тому він є одним із найуживаніших методів під час роботи з колекціями в Python.

Синтаксис дуже простий:

list.append(element)

Наприклад:

numbers = [1, 2, 3]

numbers.append(4)

print(numbers)

Результат:

[1, 2, 3, 4]

У цьому випадку число 4 стало новим останнім елементом списку.

Метод append list python може додавати не лише числа чи рядки. Як елемент можна передати будь-який об’єкт, зокрема інший список.

numbers = [1, 2, 3]

numbers.append([4, 5])

print(numbers)

Результат:

[1, 2, 3, [4, 5]]

Зверніть увагу: список [4, 5] було додано як один окремий елемент, а не об’єднано з основним списком.

Саме через цю особливість початківці часто плутають append() із extend().

Розглянемо ще один практичний приклад. Припустімо, ви створюєте програму для реєстрації учасників заходу. Кожен новий користувач додається окремо:

participants = ["Anna", "Oleh"]

participants.append("Maria")

print(participants)

Результат:

['Anna', 'Oleh', 'Maria']

У такій ситуації використання append() є найкращим рішенням, адже нові дані надходять по одному.

Метод python list append варто використовувати, якщо потрібно:

  • додати одне число;
  • додати один рядок;
  • додати словник або інший об’єкт;
  • зберегти вкладений список як окремий елемент;
  • поступово накопичувати дані під час виконання програми.

Як працює метод extend()у Python

На відміну від append(), метод extend() додає до списку не один об’єкт, а всі елементи іншої колекції. Це означає, що кожен елемент переданої послідовності буде окремо доданий у кінець списку.

Загальний синтаксис виглядає так:

list.extend(iterable)

Параметр iterable — це будь-який ітерований об’єкт, тобто такий, елементи якого можна перебирати. Це може бути список, кортеж, множина, рядок або навіть результат роботи деяких функцій Python.

Розглянемо простий приклад:

numbers = [1, 2, 3]

numbers.extend([4, 5])

print(numbers)

Результат:

[1, 2, 3, 4, 5]

На відміну від append(), список [4, 5] не став окремим елементом. Метод extend python додав кожне значення окремо, утворивши один спільний список.

Об’єднання двох списків

Одна з найпоширеніших задач, для яких використовують extend(), — об’єднання двох списків.

Наприклад:

frontend = ["HTML", "CSS"]

backend = ["Python", "Django"]

frontend.extend(backend)

print(frontend)

Результат:

['HTML', 'CSS', 'Python', 'Django']

Після виконання методу всі елементи списку backend були додані до списку frontend. При цьому сам список backend залишився без змін.

Такий підхід часто використовують під час роботи з великими наборами даних, коли потрібно об’єднати інформацію з різних джерел.

Метод extend()працює не лише зі списками

Ще одна особливість extend() полягає в тому, що він може працювати з будь-якими ітерованими об’єктами.

Наприклад, можна передати кортеж:

numbers = [1, 2]

numbers.extend((3, 4))

print(numbers)

Результат:

[1, 2, 3, 4]

Або множину:

numbers = [1, 2]

numbers.extend({3, 4})

print(numbers)

Зверніть увагу: множина (set) не зберігає порядок елементів, тому результат може відрізнятися під час різних запусків програми.

Ще один цікавий приклад — робота з рядками:

letters = ["A"]

letters.extend("BC")

print(letters)

Результат:

['A', 'B', 'C']

Python сприймає рядок як послідовність символів, тому кожна літера додається до списку окремо.

Саме ця особливість інколи дивує початківців. Якщо потрібно додати слово як один елемент списку, слід використовувати append(), а не extend().

Коли варто використовувати extend()

Метод extend() стане найкращим вибором, якщо потрібно:

  • об’єднати два або більше списків;
  • додати одразу кілька нових елементів;
  • розширити список даними з іншої колекції;
  • уникнути створення вкладених списків;
  • швидко сформувати єдиний список із кількох джерел даних.

Наприклад, уявімо, що ви створюєте застосунок для онлайн-магазину. Інформація про товари надходить із двох різних складів у вигляді окремих списків. Щоб сформувати загальний каталог товарів, достатньо використати extend(), який об’єднає всі позиції в одному списку.

append()vs extend(): різниця на прикладах

На перший погляд обидва методи виконують однакову задачу — додають дані до списку. Проте результат їхньої роботи суттєво відрізняється.

Розглянемо два майже однакові приклади.

Використання append():

numbers = [1, 2, 3]

numbers.append([4, 5])

print(numbers)

Результат:

[1, 2, 3, [4, 5]]

Тепер використаємо extend():

numbers = [1, 2, 3]

numbers.extend([4, 5])

print(numbers)

Результат:

[1, 2, 3, 4, 5]

У першому випадку список [4, 5] став одним новим елементом. У другому — його елементи були додані окремо.

Саме в цьому й полягає головна різниця між методами:

  • append() додає один об’єкт;
  • extend() додає кожен елемент переданої колекції.

Для наочності порівняємо їх у таблиці.

Характеристикаappend()extend()
ДодаєОдин елементУсі елементи колекції
Працює зі списком як з одним об’єктом
Створює вкладений списокМожеНі
Підходить для об’єднання списків
Найкраще використовувати, колиПотрібно додати один елементПотрібно додати кілька елементів

Щоб легше запам’ятати різницю, можна скористатися простим правилом:

  • використовуйте append(), коли додаєте щось одне;
  • використовуйте extend(), коли додаєте цілу колекцію елементів.

Саме правильний вибір методу допомагає уникнути зайвих вкладених списків і зробити код зрозумілішим для інших розробників.

Типові помилки при додаванні елементів до списку

Методи append() і extend() мають простий синтаксис, але саме під час роботи з ними початківці найчастіше припускаються помилок. У більшості випадків причина полягає в тому, що розробник неправильно розуміє, як саме Python додає нові елементи до списку.

Розглянемо найпоширеніші ситуації.

Плутанина між

append()і extend()

Найтиповіша помилка — використовувати append(), коли потрібно об’єднати два списки.

Наприклад:

numbers = [1, 2, 3]

numbers.append([4, 5])

print(numbers)

Багато новачків очікують отримати:

[1, 2, 3, 4, 5]

Насправді результат буде іншим:

[1, 2, 3, [4, 5]]

Причина проста: метод append() додає один об’єкт, навіть якщо ним є цілий список.

Якщо потрібно додати всі елементи іншого списку, слід використовувати extend():

numbers = [1, 2, 3]

numbers.extend([4, 5])

print(numbers)

Результат:

[1, 2, 3, 4, 5]

Присвоєння результату роботи методу змінній

Ще одна поширена помилка пов’язана з тим, що append() і extend() не повертають новий список. Вони змінюють уже існуючий список безпосередньо.

Неправильний приклад:

numbers = [1, 2, 3]

result = numbers.append(4)

print(result)

Результат:

None

Це може збити з пантелику тих, хто тільки починає працювати з Python.

Правильний варіант:

numbers = [1, 2, 3]

numbers.append(4)

print(numbers)

Результат:

[1, 2, 3, 4]

Так само працює і extend() — після виклику методу змінюється сам список, а не створюється новий.

Використання extend()для одного елемента

Іноді можна зустріти такий код:

numbers = [1, 2]

numbers.extend([3])

Хоча він працює правильно, у цьому випадку логічніше використати append():

numbers = [1, 2]

numbers.append(3)

Такий запис коротший, зрозуміліший і краще передає намір розробника.

Неочікувана поведінка під час роботи з рядками

Оскільки extend() працює з будь-якими ітерованими об’єктами, рядок також розглядається як послідовність символів.

Наприклад:

letters = []

letters.extend("Python")

print(letters)

Результат:

['P', 'y', 't', 'h', 'o', 'n']

Якщо ж потрібно додати слово як один елемент списку, варто використати append():

letters = []

letters.append("Python")

print(letters)

Результат:

['Python']

Це одна з особливостей мови Python, про яку важливо пам’ятати під час роботи з рядками.

Як швидко вибрати потрібний метод

Щоб не плутатися між append() і extend(), можна скористатися простим правилом.

Використовуйте append(), якщо потрібно:

  • додати одне число, рядок або інший об’єкт;
  • поступово наповнювати список;
  • зберегти інший список як окремий вкладений елемент.

Використовуйте extend(), якщо потрібно:

  • об’єднати два списки;
  • додати одразу кілька елементів;
  • розширити список даними з іншої колекції;
  • уникнути створення вкладених списків.

Якщо під час вибору методу виникають сумніви, поставте собі просте запитання: ви додаєте один об’єкт чи всі його елементи? Відповідь допоможе швидко визначити, який метод використати.

Рекомендуємо курси по темі

Висновок

Методи append() і extend() належать до базових інструментів роботи зі списками в Python. Незважаючи на схожий синтаксис, вони виконують різні завдання. append() додає до списку один новий елемент, тоді як extend() розширює список усіма елементами іншої колекції.

Розуміння цієї різниці допоможе уникнути типових помилок, зробить код більш читабельним і спростить роботу з колекціями в майбутніх проєктах. Саме такі базові концепції формують міцний фундамент для подальшого вивчення Python.

Якщо ви тільки починаєте свій шлях у програмуванні, варто не лише запам’ятати синтаксис методів, а й застосовувати їх на практиці. На курсі Python Basic від Hillel IT School студенти вивчають роботу зі списками, циклами, функціями, файлами та іншими інструментами Python, виконуючи практичні завдання, максимально наближені до реальних задач розробника.

Рекомендуємо публікації по темі