Проверка с использованием all() и zip()
На этом этапе вы узнаете, как использовать функции all()
и zip()
в сочетании с отсортированными кортежами для выполнения более сложных проверок и сравнений.
Функция all()
- это встроенная функция Python, которая возвращает True
, если все элементы итерируемого объекта являются истинными (или если итерируемый объект пуст). Она часто используется для проверки, выполняется ли определенное условие для всех элементов последовательности.
Функция zip()
- это еще одна встроенная функция Python, которая принимает несколько итерируемых объектов в качестве аргументов и возвращает итератор кортежей. Каждый кортеж содержит соответствующие элементы из входных итерируемых объектов. Это полезно для сопоставления элементов из разных последовательностей для сравнения или других операций.
Давайте посмотрим, как эти функции можно использовать с отсортированными кортежами:
- Откройте редактор VS Code в среде LabEx.
- Измените существующий файл
sort_tuple.py
в директории ~/project
или создайте его, если он не существует.
- Скопируйте и вставьте следующий код в файл
sort_tuple.py
:
## Checking if a tuple is sorted using all() and zip()
def is_sorted(data):
## zip(data, data[1:]) pairs consecutive elements
## all(x <= y for x, y in ...) checks if each pair is in ascending order
return all(x <= y for x, y in zip(data, data[1:]))
my_tuple1 = (1, 2, 3, 4, 5)
my_tuple2 = (5, 2, 8, 1, 9)
print("Tuple 1:", my_tuple1, "is sorted:", is_sorted(my_tuple1))
print("Tuple 2:", my_tuple2, "is sorted:", is_sorted(my_tuple2))
Этот код определяет функцию is_sorted()
, которая проверяет, отсортирован ли заданный кортеж по возрастанию. Она использует zip()
для сопоставления последовательных элементов кортежа и all()
для проверки, находится ли каждая пара элементов в порядке возрастания.
Чтобы запустить скрипт, откройте терминал в VS Code (его можно найти в нижней панели) и выполните следующую команду:
python sort_tuple.py
Вы должны увидеть следующий вывод:
Tuple 1: (1, 2, 3, 4, 5) is sorted: True
Tuple 2: (5, 2, 8, 1, 9) is sorted: False
Как вы можете видеть, функция is_sorted()
правильно определяет, отсортированы ли кортежи или нет.
Давайте расширим этот пример и проверим, совпадают ли два кортежа после сортировки:
## Checking if two tuples are identical after sorting
def are_identical_after_sorting(tuple1, tuple2):
return sorted(tuple1) == sorted(tuple2)
tuple_a = (3, 1, 4, 1, 5)
tuple_b = (1, 5, 1, 4, 3)
tuple_c = (1, 2, 3, 4, 5)
print("Tuple A:", tuple_a, "and Tuple B:", tuple_b, "are identical after sorting:", are_identical_after_sorting(tuple_a, tuple_b))
print("Tuple A:", tuple_a, "and Tuple C:", tuple_c, "are identical after sorting:", are_identical_after_sorting(tuple_a, tuple_c))
Добавьте этот код в файл sort_tuple.py
и запустите его снова:
python sort_tuple.py
Теперь вывод должен включать следующее:
Tuple A: (3, 1, 4, 1, 5) and Tuple B: (1, 5, 1, 4, 3) are identical after sorting: True
Tuple A: (3, 1, 4, 1, 5) and Tuple C: (1, 2, 3, 4, 5) are identical after sorting: False
В этом примере функция are_identical_after_sorting()
проверяет, содержат ли два кортежа одинаковые элементы, независимо от их исходного порядка. Она сортирует оба кортежа и затем сравнивает отсортированные списки.