Python: Урок 10. Списки - змінювані послідовності

Списки (List)  —  в мові програмування Python, як і рядки, є впорядкованими послідовностями. Однак, на відміну від рядків, списки складаються не з символів, а з різних об'єктів (значень, даних), і вкладаються не в лапки, а в квадратні дужки [ ]. Об'єкти відокремлюються один від одного за допомогою коми.

Списки можуть складатися з різних об'єктів: чисел, рядків і навіть інших списків. В останньому випадку, списки називають вкладеними.
[23, 656, -20, 67, -45] # список з цілих чисел
[4.15, 5.93, 6.45, 9.3, 10.0, 11.6] # список з дробових чисел
["Katy", "Sergiy", "Oleg", "Dasha"] # список з рядків
["Київ", "Відень", 12, 148] # змішаний список
[[0, 0, 0], [0, 0, 1], [0, 1, 0]] # список, що складається зі списків
Як і над рядками, над списками можна виконувати операції з'єднання і повторення:
>>> [45, -12, 'april'] + [21, 48.5, 33]
[45, -12, 'april', 21, 48.5, 33]
>>> [[0,0], [0,1], [1,1]] * 2
[[0, 0], [0, 1], [1, 1], [0, 0], [ 0, 1], [1, 1]]
За аналогією з символами рядків, можна отримувати доступ до об'єктів списку за їх індексами, витягувати зрізи, вимірювати довжину списку:
>>> li = ['a','b','c','d','e','f']
>>> len(li)
6
>>> li[0]
'a'
>>> li[4]
'e'
>>> li[0:3]
['a', 'b', 'c']
>>> li[3:]
['d', 'e', 'f']
На відміну від рядків, списки — це змінювані послідовності. Якщо уявити рядок як об'єкт в пам'яті, то коли над ним виконуються операції конкатенації і повторення, то це рядок не змінюється, а в результаті операції створюється інший рядок в іншому місці пам'яті. У рядок не можна додати новий символ або видалити існуючий, не створивши при цьому нового рядка.

Зі списком справа йде інакше. При виконанні операцій інші списки можуть не створювати, а змінюватися безпосередньо оригінал. Зі списків можна видаляти елементи, додавати нові. При цьому слід пам'ятати, багато залежить від того, як ви розпоряджаєтеся змінними. Бувають ситуації, коли списки таки копіюються. Наприклад, результат операції присвоюється іншій змінній.

Символ у рядку змінити не можна, а елемент списку - можна:
>>> mystr = 'abrakadabra'
>>> mylist = ['ab','ra','ka','da','bra']
>>> mystr[3] = '0'
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module> mystr[3] = '0'
TypeError: 'str' object does not support itemassignment
>>> mylist[1] = 'ro'
>>> mylist
['ab', 'ro', 'ka', 'da', 'bra']
Як бачимо, при спробі змінити один елемент рядка, з'являється повідомлення про помилку (виділено червоним).

У списку можна замінити цілий зріз:
>>> mylist[0:2] = [10,20]
>>> mylist
[10, 20, 'ka', 'da', 'bra']
Складніша ситуація:
>>> alist = mylist[0:2] + [100,'it is ',200] + mylist[2:] # новий список
>>> a2list = mylist # створюється друге посилання-змінна на перший список
>>> alist
[10, 20, 100, 'it is ', 200, 'ka', 'da', 'bra']
>>> a2list
[10, 20, 'ka', 'da', 'bra']
>>> a2list[0] = '!!!' # змінюємо список
>>> a2list
['!!!', 20, 'ka', 'da', 'bra']
>>> mylist # обидві змінні пов'язані з одним списком
['!!!', 20, 'ka', 'da', 'bra']

Практична робота

  1. Створіть два будь-яких списки і зв'яжіть їх із змінними.
  2. Вийміть з першого списку другий елемент.
  3. Змініть в другому списку останній об'єкт. Виведіть список на екран.
  4. З'єднайте обидва списки в один, присвоївши результат новій змінній. Виведіть отриманий список на екран.
  5. "Зніміть" зріз з об'єднаного списку так, щоб туди потрапили деякі частини обох перших списків. Зріз зв'яжіть з якоюсь новою змінною. Виведіть значення цієї змінної.
  6. Додайте до цього списку-зріза два нові елементи і знову виведіть його.

Приклад виконання практичної роботи

>>> spysok1 = [45, 2, 8, 97, 34]
>>> spysok2 = [65, 23, 10]
>>> spysok1 [1]
2
>>> spysok2 [-1] = 12
>>> spysok2
[65, 23, 12]
>>> big_spysok = spysok1 + spysok2
>>> big_spysok
[45, 2, 8, 97, 34, 65, 23, 12]
>>> small_spysok = big_spysok [3:7]
>>> small_spysok [4:6] = [56, 84]
small_spysok
[97, 34, 65, 23, 56, 84]

Зміст курсу

Вступ
Урок 1. Історія мов програмування. Компіляція та інтерпретація
Урок 2. Знайомство з Python і середовищами програмування
Урок 3. Типи даних в програмуванні. Визначення змінної
Урок 4. Логічні вирази
Урок 5. Умовний оператор. Інструкція if
Урок 6. Множинне розгалуження
Урок 7. Цикл while
Урок 8. Введення даних з клавіатури
Урок 9. Рядки як послідовності символів
Урок 10. Списки - змінювані послідовності
Урок 11. Cловники
Урок 12. Цикл for
Урок 13. Функції
Урок 14. Параметри і аргументи функцій. Локальні та глобальні змінні
Урок 15. Перевірочна робота з основ програмування на Python

Коментарі

Популярні дописи з цього блогу

Азбука Морзе Українською

Python: Урок 4. Логічні вирази

Python: Урок 3. Типи даних в програмуванні. Визначення змінної