Python. Оператор присвоєння. Форми присвоювання. Приклади. Позиційне присвоювання кортежів, списків




Оператор присвоєння. Форми присвоювання. Приклади. Позиційне присвоювання кортежів, списків


Зміст


Пошук на інших ресурсах:

1. Призначення оператора присвоювання

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

 

2. Які існують форми інструкції присвоювання? Приклади

У мові Python існують такі форми (різновиди) інструкції присвоювання:

  • звичайна (канонічна) форма. Ця форма зв’язує одну змінну (один елемент даних) з одним об’єктом;
  • позиційне присвоювання кортежів. У цьому випадку у лівій частині присвоєння вказується декілька змінних (елементів даних), що відповідають такій самій кількості об’єктів у правій частині. Значення (об’єкти) у правій частині присвоюються іменам (змінним) у лівій частині, які розміщуються на тих самих позиціях;
  • позиційне присвоювання списків. Працює за принципом позиційного присвоювання кортежів, але реалізоване для списків;
  • позиційне присвоювання послідовностей. У цьому випадку послідовність знаходиться справа від знака присвоювання. Ця послідовність розбивається на піделементи, кожен з яких присвоюється відповідному імені, що вказується у лівій частині оператора присвоювання;
  • присвоювання з використанням операції розпаковування *;
  • присвоювання одинарного об’єкту групі імен;
  • комбіноване присвоювання. У цьому випадку використовуються оператори +=, -=, *=, /=, //=, %=, &=, |=, ^=, >>=, <<=, **=.

 

3. Присвоювання одиночних об’єктів. Загальна форма. Приклади

Якщо оператор присвоєння використовується для одиночних об’єктів, то його загальна форма має вигляд:

name = value

де

  • name – ім’я (змінна), яке потрібно зв’язати зі значенням (об’єктом) value;
  • value – значення, яке присвоюється імені name, яке може бути виразом, одиночним значенням чи списком.

Також допускається в одному рядку виконувати декілька присвоєнь одиночним об’єктам. У цьому випадку операції присвоєння розділяються символом ‘;’.

Приклади.

>>> a=5 # канонічна форма
>>> b=7; c=8; d=9 # канонічна форма, розділено знаком ;
>>> b
7
>>> a
5
>>>
>>> T = [1,2,4] # присвоювання списку
>>> T
[1, 2, 4]
>>>

У вищенаведеному прикладі змінна a зв’язується з об’єктом 5. Також змінні b, c, d отримують значення відповідно 7, 8, 9. Ім’я T зв’язується зі списком [1, 2, 4].

 

4. Позиційне присвоювання кортежів та списків. Загальна форма. Принцип виконання позиційного присвоювання

У найпростішому випадку загальна форма позиційного оператора присвоювання кортежів має вигляд:

name1, name2, ..., nameN = value1, value2, ..., valueN

де

  • name1, name2, nameN – імена (змінні) які потрібно зв’язати з об’єктами (значеннями) value1, value2, valueN;
  • value1, value2, valueN – значення (об’єкти), що зв’язуються з іменами name1, name2, nameN.

При присвоюванні декількох об’єктів, порядок присвоювання формується зліва направо. Ім’ена, що зв’язуються з переліком об’єктів рекурсивно переглядаються зліва направо. Кожному імені у лівій частині оператора присвоювання відповідає відповідний об’єкт (значення) у правій частині оператора присвоювання.

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

 

5. Приклади використання оператора присвоювання для декількох імен

Приклад 1. У нижченаведеному коді демонструється присвоювання значень декільком об’єктам.

>>> x=[0,1,2,3]
>>> i=0
>>> i,x[i]=2,6
>>> x
[0, 1, 6, 3]
>>>

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

>>> i,x[i]=2,6

завдяки рекурсивному виклику послідовно формується у два рядки

i=2
x[i]=6 # x[2]=6

тому, у результаті об’єкт-список x буде мати значення

[0, 1, 6, 3]

 

6. Позиційне присвоювання послідовностей символів. Приклад

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

>>> x,y,z,w = 'abcd'
>>> x
'a'
>>> y
'b'
>>> z
'c'
>>> w
'd'
>>>


 

7. Приклади позиційного присвоювання кортежів для обміну їх значеннями

Приклад 1.

У цьому прикладі здійснюється обмін значеннями двох кортежів:

>>> a,b = 5,7 # позиційне присвоювання кортежів
>>> a,b
(5, 7)
>>> a,b = b,a # обмін значеннями
>>> a,b
(7, 5)
>>>

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

>>> a,b = b,a

працює наступним чином:

  • спочатку створюється тимчасовий кортеж, який запам’ятовує оригінальні значення a, b справа від операції присвоювання. У цьому тимчасовому кортежі оригінальні значення a’ = 5, b’ = 7;
  • імені a присвоюється значення b’ з тимчасового кортежу. Тобто a = b’ = 7;
  • імені b присвоюється значення a’ з тимчасового кортежу. Тобто b = a’ = 5.

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

Приклад 2.

>>> a,b,c,d = (1,2,3,4) # присвоювання значень іменам
>>> (a,b,c,d)
(1, 2, 3, 4)
>>> a,b,c,d = d,c,b,a # a = d; b = c; c = b; d = a
>>> a,b,c,d
(4, 3, 2, 1)

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

>>> a,b,c,d = d,c,b,a

інтерпретатор виконує таку послідовність дій:

  • створюється тимчасовий кортеж, в якому імена мають наступні значення: a=1, b=2, c=3, d=4;
  • ім’я a отримує значення d з тимчасового кортежу: a = 4;
  • ім’я b отримує значення c з тимчасового кортежу: b = 3;
  • ім’я c отримує значення b з тимчасового кортежу. Таким чином c = 2;
  • ім’я d отримує значення a з тимчасового кортежу. Отже d = 1.

 

8. Позиційне присвоювання списків. Приклад

Змінні можуть формуватись у списки. Присвоювання у списках може бути таким:

>>> [X,Y,Z] = [5,10,15] # позиційне присвоювання списків
>>> [X,Y,Z]
[5, 10, 15]
>>> X
5
>>> Y,Z
(10, 15)
>>> [Y,Z] # представити як список
[10, 15]
>>> (X,Y,Z) # представити як кортеж
(5, 10, 15)
>>>

 

9. Приклад присвоювання між кортежами і списками

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

>>> [x, y, z] = (5, 10, 15) # кортеж значень присвоюється списку змінних
>>> x,y,z
(5, 10, 15)
>>> (i,j,k) = [100, 200, 300] # список значень присвоюється кортежу
>>> i,j,k
(100, 200, 300)
>>> (a,b,c,d) = "INFO" # рядок символів присвоюється кортежу
>>> a,b,c,d
('I', 'N', 'F', 'O')
>>> a,d
('I', 'O')
>>>

 

10. Які обмеження встановлюються при присвоюванні послідовностей?

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

Наприклад.

>>> text = "ABCD"
>>> x,y,z = text # кількість елементів не співпадає
Traceback (most recent call last):
File "<pyshell#113>", line 1, in <module>
x,y,z = text
ValueError: too many values to unpack (expected 3)
>>>

Якщо потрібно присвоїти різну кількість елементів, то в Python є можливість отримати зріз. Більш детально про зрізи описується в іншій темі.

 


Зв’язані теми