Искать
Вы превысили запрос на
0 знаков

31. Более подробно о кортежах в Python

Не пройден
0
0

Кратко

- Кортежи в Python используются для хранения неизменяемых данных.

- Кортежи являются неизменяемой структурой, но только "первый уровень" элементов является неизменным.

- Кортежи не имеют многих методов списков, таких как sort() и append(), но к ним может применяться функция sorted(), которая возвращает новый список.

- Срезы также работают для кортежей.

- Рекомендуется использовать кортежи вместо списков для сокращения ресурсов и предотвращения непредвиденных ситуаций.

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

Немного истории

Начнем с краткой исторической справки появления кортежей. Создатель языка Python (Гвидо ван Россум) математик по образованию. Вероятно, это распространенное понятие из математики перекочевало в Python. Всё, больше нечего добавить.

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

Пример (python)
print("Hello", "World")

# равнозначный код
t = ("Hello", "World")
print(*t) 

В этом примере мы использовали оператор распаковки (*), к нему вернемся позже, когда познакомимся с созданием функций в Python. Сейчас речь не о нем.

Инициализацию списка можно тоже считать кортежем:

Пример (python)
l = [*("Hello", "World")] 

Даже обычный блок кода, это кортеж в каком-то роде. К слову о неявном применении кортежей. Они могут инициализироваться без скобок, например:

Пример (python)
t = "Hello", "World"
type(t) # => <class 'tuple'> 

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

Пример (python)
d = { (0, 1): 1, (-1, 0): 2 } 

Кортежи – неизменяемая структура. Это означает, что элементы кортежа не могут быть изменены, но есть особенность. Только «первый уровень» элементов является неизменным. Например, создадим кортеж и попробуем изменить элемент:

Пример (python)
t = (1, 2, [3, 4], 5)
t[2] = 6 

В таком случае возникнет исключение TypeError. Об исключениях поговорим совсем скоро.

Пример (python)
Traceback (most recent call last):
  File "C:/test.py", line 2, in <module>
    t[2] = 6
TypeError: 'tuple' object does not support item assignment 

Теперь попробуем изменить список, который находится в кортеже под индексом 2:

Пример (python)
t = (1, 2, [3, 4], 5)
t[2][1] = 6
print(t) # => (1, 2, [3, 6], 5) 

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

Как вы вероятно догадались, кортежи не имеют многих методов списков, которые изменяют их, например, методов sort() и append(). Если вы помните, в уроке о сортировке списков мы говорили о функции sorted(), которая применима для всех итерируемых объектов, включая кортежи:

Пример (python)
t = (3, 2, 6, 1, 4)
sorted(t) # => [1, 2, 3, 4, 6] 

Обратите внимание, функция sorted() не изменяет текущий объект, а возвращает новый, в данном случае – список.

Срезы, о которых мы говорили ранее, так же работают для кортежей:

Пример (python)
t = (3, 2, 6, 1, 4)
t[1:3] # => (2, 6) 

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

Мы закончили раздел «Структуры данных в Python» и настало время подводить итоги. В следующем разделе продолжим изучение циклов.

Тест

Две секундочки...

Похожие уроки Codebra

@codebra_official
Подписывайся на наш Telegram-канал!
Новости, полезный материал,
программирование и ИБ
Итоги раздела «Структуры данных в Python»Знакомство с Python
Типы данных в PythonЗнакомство с Python
Обработка исключений (try/except) в PythonЗнакомство с Python
Поиск хостов с помощью NmapРазведка и сканирование
Введение в раздел «Структуры данных в Python»Знакомство с Python
Пользовательские функции в PHPКурс по PHP
Генераторы и оператор yield в PythonЗнакомство с Python
Конкатенация и сортировка списков в PythonЗнакомство с Python
Первое знакомство с PythonЗнакомство с Python
Впервые на сайте Codebra?

Извините за это всплывающее окно, меня они тоже раздражают.

Образовательный ресурс codebra.ru полностью посвящен программированию и компьютерной безопасности. Все курсы и уроки находятся на главной странице. Ради интереса можете посмотреть на содержимое курсов по Пентесту Active Directory, Python, HTML и CSS, JavaScript, C++ и другие, размещенные на главной странице.

Если что-то не нашли, то воспользуйтесь поиском по сайту, который находится на главной странице в самом верху.

Удачи в обучении!

Закрыть окно