Оператор присвоєння. Форми присвоювання. Приклади. Позиційне присвоювання кортежів, списків
Зміст
- 1. Призначення оператора присвоювання
- 2. Які існують форми інструкції присвоювання? Приклади
- 3. Присвоювання одиночних об’єктів. Загальна форма. Приклади
- 4. Позиційне присвоювання кортежів та списків. Загальна форма. Принцип виконання позиційного присвоювання
- 5. Приклади використання оператора присвоювання для декількох імен
- 6. Позиційне присвоювання послідовностей символів. Приклад
- 7. Приклади позиційного присвоювання кортежів для обміну їх значеннями
- 8. Позиційне присвоювання списків. Приклад
- 9. Приклад присвоювання між кортежами і списками
- 10. Які обмеження встановлюються при присвоюванні послідовностей?
- Зв’язані теми
Пошук на інших ресурсах:
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 є можливість отримати зріз. Більш детально про зрізи описується в іншій темі.
⇑
Зв’язані теми
- Представлення даних в Python. Поняття об’єкту. Ідентичність, тип, значення об’єкту. Функції id(), type(). Оператори is, is not
- Інструкція (оператор) if. Визначення. Приклади