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

Кортежи (tuples)

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

20.2. Сравнение кортежей

Операторы сравнения работают как с кортежами, так и с другими последовательностями: Питон сначала сравнивает первые элементы последовательностей; если они равны, сравниваются следующие элементы и так до тех пор, пока не найдутся неравные элементы. Последующие элементы не рассматриваются (даже если они очень большие).

>>> (0, 1, 2) < (0, 3, 4)
True
>>> (0, 1, 2000000) < (0, 3, 4)
True
  

Функция сортировки работает аналогичным образом. Сначала она сортирует по первым элементам, в случае равенства первых элементов — по вторым и т.д.

Эта характерная особенность сортировки легла в основу метода под названием DSU (Decorate-Sort-Undecorate): разметка (Decorate) последовательности с помощью создания списка кортежей, каждый из которых включает элемент исходной последовательности плюс один или несколько вспомогательных ключей сортировки, предшествующих этому элементу; затем сортировка (Sort) списка кортежей с помощью встроенной функции Питона и далее удаление разметки (Undecorate) путем извлечения отсортированных элементов исходной последовательности.

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

def sort_by_length(words):
t = list()
for word in words:
t.append((len(word), word))
t.sort(reverse=True)
res = list()
for length, word in t:
res.append(word)
return res
  

Первый цикл создаст список кортежей, где каждый кортеж – это слово с определенной длиной.

При сортировке сравниваются первые элементы — длины слов, вторые элементы рассматриваются лишь при равенстве первых. Ключевой аргумент reverse=True предписывает выполнять сортировку в порядке убывания.

Второй цикл проходит список кортежей и формирует список слов в порядке убывания по длине.

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

Я записалась на курсы, но я опасаюсь отправлять копию паспорта. Я не уверена, что она не попадёт в чужие руки. Скажите, пожалуйста, какая у Вас степень защиты документов?

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