Списки
Список (list) – це структура даних для зберігання об’єктів різних типів. Списки належать до змінюваних типів даних. Список може містити будь-яку кількість будь-яких об’єктів, в тому числі і вкладені списки.
Списки – це змінні об’єкти, тому їх елементи можуть змінюватися, або може змінюватися їх порядок.
Створення списків.
Існує декілька способів створення списків:
у квадратних дужках перерахувати усі елементи списку через кому;
numbers = [1, 2, 3, 4, 5]
вказати лише тільки квадратні дужки, буде створено порожній список;
L = []
за допомоги конструктора list().
L = list()
Приклад: створити програму, яка буде записувати числа із послідовності від 1 до n у список.
- n = int(input(‘введіть кількість цифр = ‘))
- L = list(range(1, n+1))
- print(L) #[1, 2, 3, 4, … n]
Кожен елемент списку має свій номер (індекс), за яким до нього можна звернутися. Перший елемент має індекс [0], другий елемент має індекс [1] і так далі. Для звернення до елементів починаючи із кінця списку, можна використовувати негативні індекси, починаючи з [-1].
Приклад:
- L = [‘red’,‘orange’,‘yellow’]
- print(L[1]) #[‘orange’]
- print(L[-1]) #[‘yellow’]
Вивести всі елементи списку можна за допомоги циклу.
Приклад:
- L = [1, 2, 3, 4, 5]
- for i in L
- print(i, end=’ ‘) #1 2 3 4 5
Додавання елементів до списку.
Щоб додати елемент у список застосовуються методи append() та insert().
Метод append() – додає елемент item в кінець списку.
Приклад:
- L = [‘red’,‘orange’,‘yellow’]
- L.append(input(‘введіть свій колір: ‘)) #’green’
- print(L) #[‘red’, ‘orange’, ‘yellow’, ‘green’]
Метод insert () – додає елемент item в список за індексом [i].
Приклад:
- L = [‘red’,‘orange’,‘green’]
- L.insert(2,‘yellow’)
- print(L) #[‘red’, ‘orange’, ‘yellow’, ‘green’]
Заміна елементів у списку.
На відміну від рядків, елементи списку можна змінювати, привласнюючи їм нові значення. Тому, якщо відомо значення елемента списку або його індекс, цей елемент списку можна замінити безпосередньо звернувшись до нього.
Приклад:
- L = [‘red’,‘orange’,‘green’]
- L[2] = ‘yellow’
- print(L) #[‘red’, ‘orange’, ‘yellow’]
Зріз списку.
В мові Python можна отримати зріз списку.
Приклад:
- L = [‘red’,‘orange’,‘yellow’,‘green’]
- print(L[1:3]) #[‘orange’, ‘yellow’]
- print(L[1:]) #[‘orange’, ‘yellow’, ‘green’]
- print(L[:3]) #[‘red’, ‘orange’]
- print(L[:]) #[‘red’, ‘orange’, ‘yellow’, ‘green’]
- print(L[::-1]) #[‘green’,’yellow’, ‘orange’,’red’]
Видалення елементів із списку.
Щоб видалити елемент із списку можна скористатися методами pop(), remove(), clear() або оператором del.
Метод pop() – видаляє елемент з індексом [i] та повертає його. Якщо використовувати метод без аргументу, то буде видалений останній елемент зі списку.
Приклад:
- L = [‘red’,‘orange’,‘yellow’,‘green’]
- L.pop()
- print(L) #[‘red’, ‘orange’, ‘yellow’]
- print(L.pop(0)) #red
- print(L) #[‘orange’, ‘yellow’]
Метод remove() – видаляє перше входження елемента x зі списку.
Приклад:
- L = [‘red’,‘orange’,‘yellow’,‘green’]
- L.remove(‘red’)
- print(L) #[‘orange’, ‘yellow’, ‘green’]
Метод clear() – видаляє усі елементи із списку.
Приклад:
- L = [‘red’,‘orange’,‘yellow’,‘green’]
- L.clear()
- print(L) #[]
Оператор del – видаляє елемент із списку або зріз.
Приклад:
- L = [‘red’,‘orange’,‘yellow’,‘green’]
- del L[0]
- print(L) #[‘orange’, ‘yellow’, ‘green’]
- del L[0:2]
- print(L) #[‘green’]
Сортування списків.
Метод sort() – застосовується для сортування елементів списку за зростанням.
Приклад:
- L = [‘red’,‘orange’,‘yellow’,‘green’]
- L.sort()
- print(L) #[‘green’, ‘orange’, ‘red’, ‘yellow’]
При сортуванні списків фактично порівнюються два об’єкти, і який з них «менше», ставиться перед тим, який «більше». Поняття «більше» і «менше» досить умовні. І якщо для чисел все просто – числа розставляються в порядку зростання, то для рядків чи інших об’єктів ситуація більш складна. Зокрема, рядки оцінюються по перших символах. Якщо перші символи рівні, оцінюються другі символи і так далі. При чому цифровий символ вважається «менше», ніж алфавітний титульний символ, а заголовний символ вважається «менше», ніж рядковий.
Приклад:
- L = [‘red’,‘2orange’,‘Yellow’,‘green’]
- L.sort()
- print(L) #[‘2orange’, ‘Yellow’, ‘green’, ‘red’]
Таким чином, якщо в списку поєднуються рядки з великими та малими літерами, то можна отримати не зовсім коректні результати сортування.
І щоб змінити стандартну поведінку сортування, ми можемо передати в метод sort() в якості параметра функцію key.
Приклад:
- L = [‘red’,‘Orange’,‘Yellow’,‘green’]
- L.sort(key=srt.lover)
- prin(L) #[‘green’, ‘Orange’, ‘red’, ‘Yellow’]
Метод reverse() – переставляє елементи списку у зворотному порядку.
Приклад:
- L = [‘red’,‘orange’,‘yellow’,‘green’]
- L.reverse()
- print(L) #[‘green’, ‘yellow’, ‘orange’, ‘red’]
Індекс елементу.
Метод index() – використовується для отримання індексу певного елемента списку. Якщо в списку декілька однакових елементів, функція поверне індекс першого. Також, метод має два не обов’язкові параметри start та end. Води дозволять регулювати проміжок в якому буде проводитися пошук певного елемента.
Приклад:
- L = [‘red’,‘orange’,‘yellow’,‘green’]
- print(L.index(‘green’)) #3
Функції агрегації.
В Python є деякі агрегатні функції:
Приклад:
- L = [5, 4, 3, 2, 1]
- print(len(L)) #5
- print(min(L)) #1
- print(max(L)) #5
- print(sum(L)) #15
Треба зауважити, що sum працює тільки з числовими значеннями, а min, max та len можна використовувати також і з рядками.
Списки і строки.
Метод list() – перетворює строку в список, де кожним елементом цього списку виступає окремий символ цієї строки.
Приклад:
- S = ‘My program’
- L = list(S)
- print(L) #[‘M’, ‘y’, ‘ ‘, ‘p’, ‘r’, ‘o’, ‘g’, ‘r’, ‘a’, ‘m’]
Метод split() – перетворює строку в список, де кожен елемент цього списку визначається роздільником, за замовчуванням – це символ пропуску. Але, роздільник може бути визначеним будь-яким рядком.
Приклад:
- S = ‘My-program’
- L = S.split(‘-‘)
- print(L) #[‘My’, ‘program’]
Метод join() – об’єднує елементи списку в строку, за певним роздільником, до якого саме і застосовується метод.
Приклад:
- L = [‘red’,‘orange’,‘yellow’]
- S = ‘ ‘
- S = S.join(L)
- P = ‘–‘.join(L)
- print(S) #red orange yellow
- print(P) #red–orange—yellow
Генератори списків.
Для створення списків, які будуть заповнені за деяким алгоритмом, можна використовувати генератори: вирази, що дозволяють заповнити список за певною формулою.
Генератор має наступний вигляд: [вираз for змінна in послідовність]
де змінна – ідентифікатор деякої змінної, послідовність – послідовність значень, яку приймає дана змінна (це може бути список, рядок або об’єкт, отриманий за допомогою функції range), вираз – деякий вираз, як правило, залежить від використаної в генераторі змінної, яким будуть заповнені елементи списку.
Приклад: створити список, який буде заповнений квадратами чисел від 1 до n.
- n = int(input(‘Введіть кількість членів ряду = ‘))
- a = [i ** 2 for i in range(1, n+1)]
- print(a) # n=5 -> [1, 4, 9, 16, 25]