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

Кортежи (tuples)

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

20.7. Использование кортежей в качестве ключей в словарях

Кортежи, в отличие от списков, хешируемы, поэтому, если мы хотим создать составной ключ для использования в словаре, нужно использовать кортеж в качестве ключа.

Например, нам понадобится составной ключ, если мы захотим создать телефонный справочник, который отображает пары (фамилия, имя) на телефонные номера. Предположим, что переменные last (фамилия – last name), first (имя – first name) и number (номер) определены, тогда мы можем внести запись в справочник следующим образом:

directory[last,first] = number

Выражение в скобках является кортежем. Мы можем использовать присваивание кортежей в цикле for для печати содержимого справочника.

for last, first in directory:
print first, last, directory[last,first]
  

Цикл перебирает ключи справочника, которые являются кортежами. Происходит присваивание элементов каждого кортежа переменным last и first, затем выводится имя и соответствующий телефонный номер.

20.8. Последовательности: строки, списки, кортежи...

Мы уделяли внимание в основном спискам кортежей, но почти во всех примерах в этой главе используются и списки списков, кортежи кортежей, списки кортежей. Чтобы не перечислять все возможные комбинации, проще говорить о последовательностях последовательностей.

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

Списки более распространены, чем кортежи, в основном потому, что их можно изменять. Но ниже приведено несколько случаев, когда предпочтение отдается кортежам

  1. В некоторых случаях, например, в операторе return, синтаксически проще создать кортеж, чем список. В других случаях можно предпочесть список.
  2. Если мы хотим использовать последовательность как ключ в словаре, нам обязательно нужен неизменяемый тип, например, кортеж или строка.
  3. Если последовательность используется в качестве аргумента функции, применение кортежей уменьшает вероятность незапланированного поведения благодаря ссылкам.

Так как кортежи неизменяемы, они не позволяют применять такие методы, как sort и reverse, которые изменяют содержимое списка. Однако Питон предоставляет встроенные функции sorted и reversed (сортировка и обращение), которые принимают любую последовательность в качестве параметра и возвращают новый список с теми же элементами в другом порядке.

< Самостоятельная работа 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))

 

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

 

Геннадий Шестаков
Геннадий Шестаков
Беларусь, Орша
Андрей Микульский
Андрей Микульский
Молдова, Республика, Комрат, Комратский Государственный Университет