Автор статьи

Статью подготовили специалисты образовательного сервиса Zaochnik

Создание и особенности работы с кортежами в Python

Содержание:
  1. Создание кортежа и порядок элементов
  2. Особенности
  3. Применение кортежей
  4. Кортежи в логическом контексте
  5. Присваивание нескольких значений
  6. Возврат нескольких значений из функции

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

Пример 1
```python

>>> a_tuple = ("a", "b", "mpilgrim", "z", "example") # (1)

>>> a_tuple

('a', 'b', 'mpilgrim', 'z', 'example')

>>> a_tuple[0] # (2)

'a'

>>> a_tuple[-1] # (3)

'example'

>>> a_tuple[1:3] # (4)

('b', 'mpilgrim')

```

Создание кортежа и порядок элементов

Создание кортежа аналогично созданию списка, но элементы заключаются в круглые скобки вместо квадратных. Элементы кортежа имеют фиксированный порядок, подобно спискам, и индексация начинается с нуля. То есть первый элемент кортежа — это `a_tuple[0]`. Отрицательные индексы отсчитываются от конца кортежа, так что последний элемент имеет индекс -1.

Срезы (slicing) в кортежах работают так же, как и в списках: срез кортежа создает новый кортеж, аналогично тому, как срез списка создает новый список.

Примечание 1
Главное отличие между кортежами и списками в том, что кортежи неизменяемы. Это значит, что у них отсутствуют методы, позволяющие вносить изменения, такие как `append()`, `extend()`, `insert()`, `remove()` и `pop()`.

Однако можно создать срез кортежа, что приведет к образованию нового кортежа.

Пример 2
```python

# продолжение предыдущего примера

>>> a_tuple # ('a', 'b', 'mpilgrim', 'z', 'example')

>>> a_tuple.append("new") # (1)

Traceback (most recent call last):

File "<interactive input>", line 1, in <module>

AttributeError: 'tuple' object has no attribute 'append'

>>> a_tuple.remove("z") # (2)

Traceback (most recent call last):

File "<interactive input>", line 1, in <module>

AttributeError: 'tuple' object has no attribute 'remove'

>>> a_tuple.index("example") # (3)

4

>>> "z" in a_tuple # (4)

True

```

Особенности

  • Вы не можете добавлять элементы в кортежи, поскольку у них отсутствуют методы `append()` или `extend()`.
  • Удаление элементов также невозможно, так как кортежи не имеют методов `remove()` или `pop()`.
  • Тем не менее, вы можете искать элементы в кортеже, используя оператор `in` для проверки их существования.

Применение кортежей

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

Кортежи могут быть преобразованы в списки и наоборот. Функция `tuple()` преобразует список в кортеж, тогда как `list()` превращает кортеж обратно в список. В этом контексте можно сказать, что `tuple()` "замораживает" список, а `list()` "размораживает" кортеж.

Кортежи в логическом контексте

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

Пример 3
```python

>>> def is_it_true(anything):

... if anything:

... print("да, это истина")

... else:

... print("нет, это ложь")

...

>>> is_it_true(()) # (1)

нет, это ложь

>>> is_it_true(('a', 'b')) # (2)

да, это истина

>>> is_it_true((False,)) # (3)

да, это истина

>>> type((False)) # (4)

<class 'bool'>

>>> type((False,)) # <---- обратите внимание на запятую

<class 'tuple'>

```

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

Присваивание нескольких значений

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

Пример 4
```python

>>> v = ('a', 2, True)

>>> (x, y, z) = v # (1)

>>> x

'a'

>>> y

2

>>> z

True

```

Здесь `v` — кортеж из трех элементов, а `(x, y, z)` — кортеж из трех переменных. При сопоставлении присваивается значение из `v` каждой переменной по порядку.

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

Пример 5
```python

>>> (MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7)

>>> MONDAY

0

>>> TUESDAY

1

>>> SUNDAY

6

```
Примечание 2
Функция `range()` создает последовательность целых чисел. При этом отсутствующие круглые скобки в обеих частях присваивания допустимы (x, y = 0, 0).

Возврат нескольких значений из функции

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

Если вы заметили ошибку в тексте, пожалуйста, выделите её и нажмите Ctrl+Enter

Сохранить статью удобным способом

Навигация по статьям

Наши социальные сети
Не получается написать работу самому?
Доверь это кандидату наук!
Связаться через
Я принимаю условия пользовательского соглашения и  политики приватности, а также даю свое согласие на обработку моих персональных данных
Выполненные работы по программированию
  • Программирование

    НИР на тему Автоматизированое рабочее места специалиста по социальной работе

    • Вид работы:

      Отчёт по практике

    • Выполнена:

      25 февраля 2020

    • Стоимость:

      1 900 руб.

    Заказать такую же работу
  • Программирование

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

    • Вид работы:

      Эссе

    • Выполнена:

      14 февраля 2020

    • Стоимость:

      1 400 руб.

    Заказать такую же работу
  • Программирование

    Обеспечение защиты информации при использовании системы электронного документооборота

    • Вид работы:

      Реферат

    • Выполнена:

      29 декабря 2019

    • Стоимость:

      500 руб.

    Заказать такую же работу
  • Программирование

    То, что происходит с Россией с 1991 года, назвать реформами никак нельзя. Это не что иное, как революция свер

    • Вид работы:

      Эссе

    • Выполнена:

      16 декабря 2019

    • Стоимость:

      400 руб.

    Заказать такую же работу
  • Программирование

    Искусственный интеллект. Достижения и перспективы развития.

    • Вид работы:

      Эссе

    • Выполнена:

      11 декабря 2019

    • Стоимость:

      800 руб.

    Заказать такую же работу
  • Программирование

    Айти. Заполнить дневник практики.

    • Вид работы:

      Отчёт по практике

    • Выполнена:

      9 декабря 2019

    • Стоимость:

      1 800 руб.

    Заказать такую же работу