Python. Списки. Властивості списків. Приклади, що демонструють різні властивості списків.

Списки. Властивості списків. Приклади, що демонструють різні властивості списків

1. Що таке список у мові програмування Python? Особливості використання списків у Python

У мові програмування Python список є тип об’єкту, який дозволяє містити об’єкти будь-яких типів: числа, рядки, списки тощо. Іншими словами, список представляє собою запис, в якому об’єднані об’єкти різних типів (числа, рядки, тощо).

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

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

Списки – це об’єкти, які можна безпосередньо змінювати з допомогою операції присвоювання.

 

2. Основні властивості списків

Виділяють такі основні властивості списків:

1. Списки це послідовності об’єктів довільних типів

Списки – це групи об’єктів довільних типів, які забезпечують позиційне впорядкування елементів за принципом “зліва – направо”.

2. Забезпечення доступу до елементу списку за його індексом

У Python є можливість отримати елемент списку з використання операції індексування (див. п. 5). У цьому випадку отримується елемент списку з заданим індексом. Номери індексів в списку починаються з 0. Крім того, можна виконувати витягування зрізів та конкатенацію списків.

3. Змінна довжина списків

Кількість елементів (об’єктів) у списку можна змінювати. Іншими словами, списки можна збільшувати та зменшувати (див. п. 6).

4. Гетерогенність списків

Під поняттям “гетерогенність списків” розуміється те, що списки можуть містити інші складні об’єкти (див. п. 8).

5. Довільна кількість вкладень списків

Списки можуть містити довільну кількість вкладень. Тобто, можна створювати списки зі списків (див. п. 9).

6. Списки належать до категорії змінюваних об’єктів

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

7. Можливість містити масиви посилань на інші об’єкти

Списки можуть містити нуль та більше посилань на інші об’єкти (див. п. 8). Списки можуть містити посилання на об’єкт (об’єкти) у випадку присвоювання цього об’єкту імені змінної чи структури.

 

3. Приклади створення списків. Створення пустого списку

Приклад 1. У прикладі демонструється створення списку з допомогою оператора присвоєння, оператора циклу while та оператора конкатенації +.

# Приклади створення списків різними способами
# Створення пустого списку
L1 = []

# Формування списку з допомогою операції конкатенації +
i=0
while i<10:
    L1=L1+[i]
    i=i+1
print("L1 = ",L1)

Як видно з програмного коду, в рядку

L1 = []

створюється пустий список

У результаті виконання вищенаведеного коду буде виведено наступний результат

L1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Приклад 2. Створюється список символів з об’єкту типу “рядок”. Рядок складається з символів. Ці символи можуть утворити послідовність, тобто список.

# Приклади створення списків різними способами
# Створення списку з об'єкту, який ітерується
L = list('abc') # L = [ 'a', 'b', 'c']
print("L = ",L)

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

L = list('abc')

можна написати по іншому

L = list("abc")

Після виконання вищенаведеного коду буде виведено наступний результат

L =   ['a', 'b', 'c']

Приклад 3. Створюється список з неперервної послідовності цілих чисел.

# Приклади створення списків різними способами
# Створення списку з неперервної послідовності цілих чисел
L = list(range(1,10))
print("L = ",L) # L = [1, 2, 3, 4, 5, 6, 7, 8, 9]

Як видно з коду, для отримання послідовності 1, 2, … 9 використовується операція

range(1,10)

Для створення списку використовується операція

list(range(1,10))

Слово list означає ім’я типу даних “список” і використовується для створення списків.

Результат виконання програми

L = [1, 2, 3, 4, 5, 6, 7, 8, 9]

 

4. Яке призначення операції list?

Операція list використовується для створення нової копії списку. Операція list представляє собою ім’я типу даних “список”.

У Python операцію list реалізовано як окремий клас, що містить великий набір методів роботи зі списками. Щоб переглянути перелік методів класу list в Python Shell потрібно набрати

help(list)

Більш детально про використання методів класу list описується в темі:

  • Методи роботи зі списками. Приклади

Нижче наведено приклади створення списків з допомогою операції list

DAYS = list(range(1,8)) # DAYS = [1, 2, 3, 4, 5, 6, 7]
SYMBOLS = list("Hello") # ITEMS = ['H', 'e', 'l', 'l', 'o']

 

5. Як здійснюється доступ до елементу списку за його індексом? Приклади

Приклад 1. У прикладі створюється список з 3-х елементів різних типів. Потім, по черзі виводяться значення кожного елементу списку.

>>> myList=[2.5, 8, "Hello"]
>>> myList[0] # вивести елемент списку з індексом 0
2.5
>>> myList[1]
8
>>> myList[2]
'Hello'
>>>

Як видно з прикладу, нумерація елементів списку починається з 0.

Приклад 2. Використання елементу списку у виразі. Важливо, щоб значення елементу списку було коректним в операціях, що використовуються у виразі.

# використання списку у виразі
L=[2,3,4]
x=5
y=x+L[1] # y=5+3=8
print("y = ",y)
LS = ["456", 7, 3.1415]
s = "123"
s += LS[0] # s="123456"
print("s = ", s)

У результаті виконання вищенаведеного коду на екран буде виведено наступний результат

y = 8
s = 123456

Якщо спробувати додати до числа рядок

s = s + LS[1] # додавання до числа рядка - помилка!

то інтерпретатор Python виведе повідомлення про помилку

TypeError: can only concatenate str (not "int") to str

 

6. Приклад, що демонструє властивість збільшення/зменшення довжини списку

У прикладі продемонстровано властивість збільшення та зменшення списку A. Збільшення довжини списку виконується у циклі з допомогою операції конкатенації +. Зменшення довжини списку реалізовано двома способами:

  • з допомогою циклу while, у якому обчислюється позиція останнього елементу. Кількість елементів у циклі визначається операцією len. Видалення елементу здійснюєтья операцією del;
  • з допомогою операції del, в якій задається діапазон елементів списку, що видаляються.

Текст програми наступний:

# Приклади збільшення/зменшення довжини списку
# створити список
A = []

# сформувати список з 10 елементів з допомогою вводу з клавіатури
i=0
while i<10:
    x = float(input("x = "))
    A = A+[x] # збільшення списку
    i=i+1

print("Вихідний список")
print("A = ",A)

print("Зменшення списку A на 3 елементи")
i=0
while i<3:
    n = len(A) # взяти довжину списку
    del A[n-1] # видалити останній елемент списку
    i=i+1
print("A = ", A)

print("Зменшення списку ще на 2 останні елементи")
del A[n-3:n-1]
print("A = ", A)

Результат виконання програми

x = 1
x = 2
x = 3
x = 4
x = 5
x = 6
x = 7
x = 8
x = 9
x = 10
Вихідний список
A = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]
Зменшення списку A на 3 елементи
A = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]
Зменшення списку ще на 2 останні елементи
A = [1.0, 2.0, 3.0, 4.0, 5.0]

 

7. Як визначити довжину списку? Операція len. Приклад

Довжина списку – це кількість елементів списку. Довжина списку визначається операцією len().

Приклад. У прикладі визначається довжина списку з допомогою операції len.

# Визначення довжини списку операцією len
A = [ 3.5, 2.8, 'abc', [ 2, 3, False]]
length = len(A)
print("length = ", length) # length = 4

B = [ "Hello world!" ]
length = len(B)
print("length = ", length) # length = 1

C = [ 0, 3, 2, 4, 7 ]
length = len(C)
print("length = ", length) # length = 5

Результат виконання програми

length = 4
length = 1
length = 5

 

8. Приклад створення списку, що містить інші складні об’єкти

У прикладі створюється список з іменем D, який містить інші складні об’єкти:

  • два списки з іменами A, B;
  • кортеж з іменем C;
  • рядок з іменем STR.
# Приклад списку, що містить складні об'єкти
# оголошуються списки, кортеж та рядок символів
A = [] # пустий список
B = [ 1, 3, -1.578, 'abc' ] # список з різнотипними об'єктами
C = ( 2, 3, 8, -10 ) # кортеж
S = "Hello world!"

# список, який містить різні складні об'єкти
D = [ A, B, C, S ]
print("D = ", D)

Виконання програми дасть наступний результат

D = [[], [1, 3, -1.578, 'abc'], (2, 3, 8, -10), 'Hello world!']

 

9. Приклад, що демонструє властивість довільної кількості вкладень списків

У прикладі формується список L, який включає два підсписки

# Довільна кількість вкладень списків
L = [ [ 'abc', 2.5, 117 ], [ 29, False, 'DEF', "Hello" ] ]

# вивід елементів списку
print("L[0][1] = ", L[0][1]) # L[0][1] = 2.5
print("L[0][2] = ", L[0][2]) # L[0][2] = 117
print("L[1][0] = ", L[1][0]) # L[1][0] = 29
print("L[1][2] = ", L[1][2]) # L[1][2] = 'DEF'

Результат виконання програми

L[0][1] = 2.5
L[0][2] = 117
L[1][0] = 29
L[1][2] = DEF

 

10. Який результат дасть операція присвоювання списків A = B?

Якщо виконати операцію присвоювання списків A = B, то обидва імені будуть вказувати на один і той самий список. Це означає, що зміни в списку B будуть впливати на список A. Так само, зміни в списку A будуть впливати на список B.

Для того, об зі списку A створити інший список B (копію списку A), потрібно використати операцію list.

Наприклад.

# Особливості операції присвоювання =
# Створити список A
A = list(range(1,10)) # A = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# виклик операції присвоєння
B = A # Імена B та A вказують на один і той самий список

# змінити список B
B[3] = 100 # також змінюється список A

# Створити копію списку A з допомогою операції list
C = list(A) # C = [1, 2, 3, 100, 5, 6, 7, 8, 9]

# змінити список C
C[3] = 777; # змінюється тільки список C, список A не змінюється

print("A = ", A)
print("B = ", B)
print("C = ", C)

Вищенаведена програма дасть наступний результат

A = [1, 2, 3, 100, 5, 6, 7, 8, 9]
B = [1, 2, 3, 100, 5, 6, 7, 8, 9]
C = [1, 2, 3, 777, 5, 6, 7, 8, 9]