Оператор присваивания. Формы присваивания. Примеры. Позиционное присваивание кортежей, списков
Содержание
- 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 справа от операции присваивания. В этом временном кортеже оригинальные значения а’ = 5, b’ = 7;
- имени a присваивается значение b’ из временного кортежа. То есть a = b’ = 7;
- имени b присваивается значение а’ из временного кортежа. То есть b = а’ = 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. Определение. Примеры