English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной курс Python

Контроль потока Python

Функции Python

Типы данных Python

Файловая операция Python

Объекты и классы Python

Даты и время Python

Продвинутые знания Python

Python Референсруководство

Туплы (Tuple) в Python

Тупл в Python ähneltСписокРазница между ними заключается в том, что после назначения тупла его элементы изменить нельзя, в то время как в списке элементы можно изменить.

Создание тупла

Тупл создается, поместив все элементы (элементы) в скобки () (разделенные запятыми), скобки являются необязательными, но использование скобок - это хорошая привычка.

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

Можно также создавать кортежи без использования скобок. Это называется обертыванием кортежа.

Создание кортежа с одним элементом несколько особое.

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

my_tuple = ("hello")
print(type(my_tuple))  # <class 'str'>
# Создание кортежа с одним элементом
my_tuple = ("hello",)  
print(type(my_tuple))  # <class 'tuple'> 
# Скобки являются необязательными
my_tuple = "hello",
print(type(my_tuple))  # <class 'tuple'>

Доступ к элементам кортежа

Мы можем получить доступ к элементам кортежа несколькими способами.

1. Индекс

Мы можем использовать оператор индексации [] для доступа к элементам кортежа, начиная с индекса 0.

Таким образом, кортеж с шестью элементами будет иметь индексы от 0 до 5. Попытка доступа к элементам за пределами кортежа (например, 6, 7 ...) вызовет IndexError.

Индекс должен быть целым числом; поэтому мы не можем использовать float или другие типы. Это приведет к TypeError.

Таким же образом, доступ к элементам вложенного кортежа с помощью вложенных индексов, как показано в следующем примере.

my_tuple = ('p','e','r','m','i','t')
print(my_tuple[0])   # 'p' 
print(my_tuple[5])   # 't'
# IndexError: Индекс списка выходит за пределы диапазона
# print(my_tuple[6])
# Индекс должен быть целым числом
# TypeError: Индекс списка должен быть целым числом, а не浮пунктом
# my_tuple[2.0]
# Вложенные кортежи
n_tuple = ("mouse", [8, 4, 6], (1, 2, 3))
# Вложенные индексы
print(n_tuple[0][3])       # 's'
print(n_tuple[1][1])       # 4

2. Отрицательные индексы

Python позволяет использовать отрицательные индексы для последовательностей.

Индекс -1 означает последний элемент, -2 означает предпоследний элемент и так далее.

my_tuple = ('p','e','r','m','i','t')
# Выход: 't'
print(my_tuple[-1])
# Выход: 'p'
print(my_tuple[-6])

3. Срез

Мы можем использовать оператор среза-двоеточие «:» для доступа к последовательности элементов в кортеже.

my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
# 2-4 элементы
# Выход: ('r', 'o', 'g')
print(my_tuple[1:4])
# с начала до второго элемента
# Вывод: ('p', 'r')
print(my_tuple[:-7])
# с 8-го элемента до конца
# Вывод: ('i', 'z')
print(my_tuple[7:])
# элементы от начала до конца
# Вывод: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
print(my_tuple[:])

с учетом того, что индексы расположены между элементами, лучше всего визуализировать срезы, как показано ниже. Поэтому, чтобы получить диапазон, нужно указать индексы части среза кортежа.

замена кортежа

в отличие от списка, кортеж является неизменяемым.

Это означает, что после перераспределения элементов кортежа их нельзя изменить. Но если элементами являются изменяемые типы данных (например, список), то можно изменить их вложенные элементы.

мы также можем перераспределить кортеж различным значениям (перераспределить).

my_tuple = (4, 2, 3, [6, 5])
# Ошибка типа: объект типа 'tuple' не поддерживает перераспределение элементов
# my_tuple[1] = 9
# но элементы, которые могут изменяться, можно изменить
my_tuple[3][0] = 9 # Вывод: (4, 2, 3, [9, 5])
print(my_tuple)
# кортеж может быть перераспределен
my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
# Вывод: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
print(my_tuple)

мы можем использовать оператор + для объединения двух кортежей. Это также называетсяобъединение.

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

операции + и * создадут новый кортеж.

# объединение
# Вывод: (1, 2, 3, 4, 5, 6)
print((1, 2, 3) + (4, 5, 6))
# повторение
# Вывод: ('Repeat', 'Repeat', 'Repeat')
print(("Repeat",) * 3)

удаление кортежа

как уже говорилось, мы не можем изменить элементы кортежа. Это также означает, что мы не можем удалить или изменить элементы кортежа.

но можно использовать ключевое словоdelполностью удалить кортеж.

my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
# удалить элемент нельзя
# Ошибка типа: объект типа 'tuple' не поддерживает удаление элементов
# del my_tuple[3]
# можно удалить весь кортеж
del my_tuple
# Ошибка имени: имя не определено “my_tuple”
print(my_tuple)

Методы кортежей

Кортежи не предоставляют методов для добавления или удаления элементов. Доступны только два метода.

Методы кортежей Python
МетодОписание
count(x)Вернуть количество элементовx
index(x)Вернуть равноxИндекс первого элемента

Некоторые примеры методов кортежей Python:

my_tuple = ('a', 'p', 'p', 'l', 'e',)
print(my_tuple.count('p'))  # Вывод: 2
print(my_tuple.index('l'))  # Вывод: 3

Другие операции с кортежами

1. Тест членства в кортеже

Мы можем использовать ключевое слово in, чтобы проверить, существует ли элемент в кортеже.

my_tuple = ('a', 'p', 'p', 'l', 'e',)
# Операция In
# Вывод: True
print('a' in my_tuple)
# Вывод: False
print('b' in my_tuple)
# Операция Not in
# Вывод: True
print('g' not in my_tuple)

2. Пройтись по кортежу

Используя цикл for, мы можем пройтись по каждому элементу кортежа.

# Вывод: 
# Hello John
# Hello Kate
for name in ('John', 'Kate'):
     print("Hello", name)

Преимущества кортежей по сравнению со списками

Поскольку кортежи очень похожи на списки, они также используются в аналогичных ситуациях.

Но реализация кортежей в списке имеет某些 преимущества. Вот некоторые основные преимущества:

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

  • Поскольку кортежи неизменны,遍历 кортежа быстрее, чем использование списка. Таким образом, производительность略有 улучшена.

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

  • Если у вас есть неизменные данные, реализуйте их в кортеже, чтобы обеспечить их защиту от записи.