Опубликован: 14.06.2015 | Доступ: свободный | Студентов: 4710 / 503 | Длительность: 21:48:00
Авторские права: Creative Commons Attribution 3.0
Самостоятельная работа 10:

Кортежи (tuples)

< Самостоятельная работа 1 || Самостоятельная работа 10: 123456

20.3. Присваивание кортежей

Одной из особенностей синтаксиса языка Питон является возможность размещать кортеж слева от оператора присваивания. Это позволяет за один раз присваивать значение более чем одной переменной.

В примере мы используем двухэлементный список (который представляет собой последовательность) и присваиваем первый и второй его элементы переменным х и у в одном операторе присваивания.

>>> m = ( 'have', 'fun' )
>>> x, y = m
>>> x
'have'
>>> y
'fun'
>>>
  

Здесь нет ничего загадочного, Питон просто преобразует синтаксис присвоения кортежа в следующий код2Питон не воспринимает синтаксис буквально. Например, если попытаться выполнить команду для словаря, она не будет работать.:

>>> m = ( 'have', 'fun' )
>>> x = m[0]
>>> y = m[1]
>>> x
'have'
>>> y
'fun'
>>>
  

Стилистически, когда кортеж ставится с левой стороны оператора присваивания, скобки обычно опускаются, но следующий код в той же степени допустим:

>>> m = ( 'have', 'fun' )
>>> (x, y) = m
>>> x
'have'
>>> y
'fun'
>>>
  

Хитроумное использование присваивания кортежей позволяет нам поменять местами значения двух переменных в одном операторе:

>>> a, b = b, a
  

Обе части этого оператора – кортежи, но слева – кортеж переменных, а справа – кортеж выражений. Каждое значение справа присваивается соответствующей переменной слева. Все выражения справа вычисляются до любых присваиваний.

Количество переменных слева должно быть равно количеству значений справа:

>>> a, b = 1, 2, 3
ValueError: too many values to unpack
(Ошибка Значений: слишком много значений для распаковки)
  

В общем случае справа может быть любой тип последовательности (строка, список или кортеж). Например, чтобы разделить электронный адрес на имя пользователя и название домена, можно использовать фрагмент кода:

>>> addr = 'monty@python.org'
>>> uname, domain = addr.split('@')
  

Возвращаемое значение метода split является списком из двух элементов; первый элемент присваивается переменной uname, второй — переменной domain.

>>> print uname
monty
>>> print domain
python.org
< Самостоятельная работа 1 || Самостоятельная работа 10: 123456
Ксения Шошина
Ксения Шошина

курс Программирование на Python

Илья Кизилов
Илья Кизилов

В лекции приводится программа для сортировки слов по их длинне. В коде ошибка. Я исправил так:

def sort_by_length(words):

words = words.split()

t = []

for word in words:

t.append((len(word), word))

t.sort(reverse=True)

res = []

for length, word in t:

res.append(word)

return res

print(sort_by_length(words))

 

Кто ещё как сделал?

 

Александра Пуличева
Александра Пуличева
Украина