JavaRush /Курсы /Модуль 1: Python Core /Получение подкортежей

Получение подкортежей

Модуль 1: Python Core
5 уровень , 11 лекция
Открыта

12.1 Диапазон индексов

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

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

Синтаксис срезов

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

Срез кортежа можно получить, используя синтаксис tuple[start:stop:step], где:

  • start — начальный индекс элемента (включительно);
  • stop — конечный индекс элемента (не включительно);
  • step — шаг, с которым происходит выборка элементов.

Примеры:


my_tuple = (0, 1, 2, 3, 4, 5)
sub_tuple = my_tuple[1:4]  # Получаем подкортеж с элементами от индекса 1 до 3
print(sub_tuple) # Выведет (1, 2, 3)
            
sub_tuple_with_step = my_tuple[0:6:2]  # Получаем каждый второй элемент от 0 до 5
print(sub_tuple_with_step) # Выведет (0, 2, 4) 
        

Если start не указан, то по умолчанию он равен 0, а если stop не указан — он равен len(tuple). Параметр step по умолчанию равен 1.

Примеры:


# Создаем кортеж с элементами от 0 до 5
my_tuple = (0, 1, 2, 3, 4, 5)

# Создаем новый кортеж, начиная со второго элемента исходного кортежа
sub_tuple = my_tuple[1:] 
print(sub_tuple)  # Вывод: (1, 2, 3, 4, 5)

# Создаем новый кортеж, включая элементы от начала до четвертого элемента 
# (индекс 4) исходного кортежа, с шагом 1 (по умолчанию)
sub_tuple_with_step = my_tuple[:5] 
print(sub_tuple_with_step)  # Вывод: (0, 1, 2, 3, 4)

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

Отрицательные индексы в Python начинаются с -1, что соответствует последнему элементу списка (или кортежа). -2 будет указывать на предпоследний элемент и так далее. Использование отрицательных индексов упрощает доступ к элементам с конца кортежа без необходимости вычислять их позицию от начала.

Примеры использования

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


my_tuple = (10, 20, 30, 40, 50, 60, 70, 80)

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


sub_tuple = my_tuple[-3:-1]
print(sub_tuple) # Выведет (60, 70)

Таким образом, my_tuple[-3:-1] выберет элементы с индексами -3 (третий с конца) до -1 (не включая последний), что даст нам кортеж (60, 70).

Получение последнего элемента кортежа:


my_tuple = (10, 20, 30, 40, 50)
last_element = my_tuple[-1]
print(last_element) # Выведет 50 
    

Здесь, my_tuple[-1] всегда будет возвращать последний элемент кортежа, что очень удобно, когда точное количество элементов в кортеже неизвестно.

Разворот элементов кортежа задом наперед:


my_tuple = (10, 20, 30, 40, 50)
reversed_tuple = my_tuple[::-1]
print(reversed_tuple) # Выведет (50, 40, 30, 20, 10) 
    

Использование среза [::-1] позволяет легко и эффективно перевернуть порядок элементов в кортеже, получая новый кортеж с элементами в обратном порядке.

12.3 Есть ли элемент в кортеже

Проверка наличия элемента в кортеже — стандартная операция, позволяющая узнать, есть ли элемент в кортеже. Это делается с помощью оператора in, который возвращает True, если элемент присутствует в кортеже, и False в противном случае.

Использование оператора in

Оператор in является простым и интуитивно понятным способом для проверки наличия элемента:


my_tuple = (1, 2, 3, 4, 5)
element = 3
if element in my_tuple:
    print(f"{element} is in the tuple.")
else:
    print(f"{element} is not in the tuple.")
    

Проверка, что элемент отсутствует:

Если вы хотите убедиться, что элемент отсутствует в кортеже, просто используйте конструкцию not in:


names = ('Alice', 'Bob', 'Charlie')
search_name = 'Alice'
if search_name not in names:
    print(f"{search_name} не в кортеже.")
else:
    print(f"{search_name} в кортеже.")
    

Почти не отличается от работы со списком — в этом и есть универсальность и простота Python.

2
Задача
Модуль 1: Python Core, 5 уровень, 11 лекция
Недоступна
Обратный кортеж
Обратный кортеж
2
Задача
Модуль 1: Python Core, 5 уровень, 11 лекция
Недоступна
Отрицательные кортежи
Отрицательные кортежи
Комментарии (9)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Tania Solovei Уровень 64
22 сентября 2025
После начала с С++ в универе, когда никто ничего кроме ИИ толком не объяснял, пайтон прям раем кажется, как по маслу все идет))
Сергей Уровень 10
1 сентября 2024
Не могли бы более точно формулировать задания! "Напишите программу, которая создает кортеж из произвольного количества элементов, запрашиваемых у пользователя." Эту фразу можно понимать как минимум 3 разными способами. Если имеется в виду, что пользователь может вводить столько элементов, сколько захочет, пока ему не надоест, то нужно чётко оговорить в условии, какой сигнал должен прекратить дальнейший ввод данных.
Александр Уровень 19 Expert
11 января 2025
а чтобы другие ученики не гадали, можно уточнить что знаком окончания ввода нужно считать ввод "стоп"
brainiac Уровень 17
13 февраля 2025
Четкие условия задачи не дают возможности ошибиться, подумать как-то по другому и т.п. + в реальных условиях ТЗ будут в таком же стиле
shinobi Уровень 19
24 июля 2025
А можно не рассчитывать на других, а сделать самому! Как я и сделал сразу, по красоте, для себя! Вышло так:

mylist = []

while True:
    x = input("Введите элемент:")
    if x == "":
        break
    else:
        mylist.append(x)

mytuple = tuple(mylist)
subtuple = mytuple[::-1]
print(subtuple)
Прекращение ввода элементов происходит, если пользователь ничего не отправил и нажал enter! И пользователь сколько хочет элементов вводит, и условия все соблюдены, и валидатор проходит, и выглядит лаконично!
AlterAyrol Уровень 25
19 октября 2025
решается по аналогии с задачей из прошлой темы: там то же требовалось ввести "кортеж из произвольного количества элементов, запрашиваемых у пользователя". Тут решается вообще в одну строчку, но текст задания лучше по качеству к сожалению не стал( print(tuple(list(input().split()))[::-1])
Александр Уровень 12
26 октября 2025
l = [] while (s := input('Enter your element: ')) != '': l.append(s)
Егор Уровень 9
24 августа 2024
my_tuple = (10, 20, 30, 40, 50, 60, 70, 80) sub_tuple = my_tuple[-3:5] print(sub_tuple) # Выведет (60, 70) ---- > неверно, выведет ()
Александр Уровень 19 Expert
11 января 2025
Уже не актуально, исправили.