У програмуванні списки, можливо, є такою ж корисною структурою даних, як і масиви. Що таке списки, як їх створювати? Як працювати зі списками в Python? Про це ви дізнаєтеся з нашої статті.
Що таке списки в Python?
Списки можна частково ототожнювати з масивами, але відмінність і перевага лістингів (інакше їх ще називають лістингами) полягає в тому, що вони можуть комбінувати різні типи даних. Тобто лістинг відкриває більше можливостей для зберігання будь-якої послідовності об'єктів. Змінна, яка називається списком, містить посилання на структуру в пам'яті, яка містить посилання на альтернативні структури.
Список у Python — це впорядкована колекція об’єктів змішаних типів, які можна змінювати та чиї об’єкти можуть відрізнятися.
Що це означає? Давайте розглянемо визначення докладніше.
Розмір лістингу можна змінювати, зменшувати, додавати в нього нові рядки. Ви також можете змінити всю структуру списку. Майте на увазі, що кожного разу, коли використовується метод зі списку, змінюється оригінальний список, а не копія.
Для більшої ясності ви можете розглядати список у Python як список продуктів, які потрібно купити в магазині. Якщо при складанні плану покупок всі необхідні пункти розташовані один під одним, і кожен з них має свій рядок, то листинг в Python містить всі елементи, розділені комами і в квадратних дужках, щоб Python зрозумів, що тут вказано список. Елементи беруться в лапки. Це обов'язкова умова, тому що кожен елемент - окремий рядок.
Способи створення списку
Переходячи до класичного прикладу, давайте створимо список, який ми будемо використовувати та змінювати в майбутньому. Є кілька способів створення списків.
Одним з них є додаток список вбудованих функцій ( ). Для цього вам потрібно обробити будь-який об’єкт, який можна повторити (рядок, кортеж або існуючий список). У цьому випадку рядок.
Ось що відбувається в кінці:
>>> list('list') ['c', 'n', 'i', 'c', 'o', 'to']
Другий приклад показує, що списки можуть містити необмежену кількість дуже різних об’єктів. Крім того, список може залишатися порожнім.
>>> s = [] # Порожній список >>> l = ['s', 'p', ['isok'], 2] >>> s [] >>> l ['s', 'p' , ['isok'], 2]
Наступним, третім, способом формування листингів є т. зв генератор лістингу.
Генератор списків — це синтаксична конструкція для створення списків. Він схожий на цикл for.
>>> c = [c * 3 для c у 'списку'] >>> c ['lll', 'iii', 'sss', 'ttt']
Також з його допомогою можна створити більш об’ємні конструкції:
>>> c = [c * 3 для c у 'списку', якщо c != 'i'] >>> c ['lll', 'sss', 'ttt'] >>> c = [c + d для c в 'списку', якщо c != 'i' для d в 'спамі', якщо d != 'a'] >>> c ['ls', 'lp', 'lm', 'ss', 'sp' , 'sm', 'ts', 'tp', 'tm']
Однак цей метод генерації не завжди ефективний при складанні кількох списків. Тому для створення списків доцільно використовувати цикл for.
Якщо потрібно звернутися до будь-якого елемента зі списку, то використовуються індекси. Кожен елемент має свій індекс.
Індекс - це номер елемента в списку.
Якщо ви хочете заповнити лістинг однаковими елементами, що повторюються, використовується символ *. Наприклад, вам потрібно додати в лістинг три однакових числа: [100] * 3.
Функції лістингу
Функції – це чи не головна перевага Python перед іншими мовами програмування. До списків можна застосовувати основні вбудовані функції.
Розглянемо найбільш популярні з них:
- список (діапазон ( )) – якщо стоїть завдання створити послідовний список, то використовується функція діапазону. Ця функція має такі форми:
- діапазон (кінець). Використовується, коли необхідно створити лістинг від нуля до кінцевого числа.
- діапазон (початок, кінець). Вказуються початковий і кінцевий номери.
- діапазон (початок, кінець, крок). Параметр step задає характеристику вибору. Наприклад, якщо вам потрібно вибрати кожне п'яте число з послідовності від 1 до 21, то результуючий лістинг матиме такий вигляд: [10,15, 20].
Функція діапазону може значно зменшити обсяг коду.
- льон (перелік) – дозволяє дізнатися, скільки елементів у списку.
- відсортовано (список, [ключ]) – сортує об’єкти в списку за зростанням.
- max (список) – повертає найбільший елемент.
- хв (список) – протилежна функція – дозволяє повернути елемент з мінімальним значенням.
Ви також можете використовувати інші вбудовані функції:
- список (кортеж) – Перетворює об’єкт кортежу на список.
- сума (список) – підсумовує всі елементи в списку, якщо всі значення є числами, застосовується як до цілих чисел, так і до десяткових. Однак у неї не завжди все виходить правильно. Якщо в списку є нечисловий елемент, функція видасть помилку: «TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’».
Методи лістингу
Давайте повернемося до нашого списку товарів, які можна купити в магазині, і назвемо його список магазинів:
список магазинів = []
Далі розглянемо методи лістингу:
- додати (елемент) – з його допомогою можна додати елемент до списку. У цьому випадку новий елемент буде в кінці.
Давайте заповнимо наш новий список потрібними продуктами:
shoplist.append(хліб)
shoplist.append(молоко)
- списокрозширити(A) – додає «список до списку». Ця функція економить час, оскільки ви можете додавати кілька елементів одночасно. Припустимо, у нас уже є список фруктів, нам потрібно додати їх до основного списку.
shoplist.extend(фрукти)
- вставити (індекс, елемент) – вставляє в елемент із вказаним індексом вказане значення перед вказаним індексом.
- lcount(елемент) – показує кількість повторів елемента.
- списоквидалити(пункт) є протилежною функцією списокдодати (x). Його можна використовувати для видалення будь-якого елемента. Якщо вибраного елемента немає в списку, повідомляється про помилку.
- pop([індекс]) – видаляє виділений елемент і повертає його таким же чином. Якщо елемент не вказано, то останній елемент видаляється зі списку.
- sort([ключ]) – розміщує елементи в списку в порядку зростання, але ви також можете вказати функцію.
- індекс (елемент) – показує індекс першого вибраного елемента.
- Ви можете розширити список, тобто віддзеркалити всі його елементи, використовуючи метод реверс (список). Останній елемент стає першим, передостанній – другим і так далі.
- За допомогою команди створюється копія списку копія (список).
- глибока копія (список) – глибоке копіювання.
- Видаліть усі елементи списку за допомогою методу чистий список).
Варто відзначити, що методи лістингу відрізняються від методів рядків тим, що вони відразу змінюють список, тобто немає необхідності повертати результат виконання.
>>> l = [1, 2, 3, 5, 7] >>> l.sort() >>> l [1, 2, 3, 5, 7] >>> l = l.sort() > >> print(l) Жодного
Нижче наведено приклад роботи зі списками:
>>> a = [66.25, 333, 333, 1, 1234.5] >>> print(a.count(333), a.count(66.25), a.count('x')) 2 1 0 >>> a.insert(2, -1) >>> a.append(333) >>> a [66.25, 333, -1, 333, 1, 1234.5, 333] >>> a.index(333) 1 >> > a.remove(333) >>> a [66.25, -1, 333, 1, 1234.5, 333] >>> a.reverse() >>> a [333, 1234.5, 1, 333, -1, 66.25 ] >>> a.sort() >>> a [-1, 1, 66.25, 333, 333, 1234.5]