Python

Фильтрация кортежей в Python

Фильтраций кортежа в Python:

  1. Используйте функцию filter() для фильтрации кортежа.
  2. Функция filter() возвращает итератор с результатом.
  3. Передайте объект в filter классу tuple(), чтобы преобразовать его в кортеж.
# ✅ Фильтрация кортежа
my_tuple = (1, 3, 5, 7, 9, 12)

filtered_tuple = tuple(
    filter(lambda item: item > 5, my_tuple)
)

# 👇️ (7, 9, 12)
print(filtered_tuple)

# -----------------------------------------------------

# ✅ Фильтрация списка кортежей 
list_of_tuples = [('Alice', 1), ('Bob', 2), ('Carl', 3), ('Delilah', 4)]

filtered_list = [tup for tup in list_of_tuples if tup[1] > 2]

# 👇️ [('Carl', 3), ('Delilah', 4)]
print(filtered_list)

Мы использовали функцию filter() для фильтрации кортежа.

Функция filter принимает функцию и итерируемый объект в качестве аргументов и создает итератор из элементов итерируемого объекта, для которых функция возвращает истинное значение.

Функция filter возвращает объект filter, поэтому нам пришлось передать объект filter классу tuple(), чтобы преобразовать его в кортеж.

Если вы передаете None в качестве аргумента функции, все ложные элементы итерации удаляются.

my_tuple = (1, 0, '', 3, 5, 0, '')

filtered_tuple = tuple(
    filter(None, my_tuple)
)

# 👇️ (1, 3, 5)
print(filtered_tuple)

Функция отфильтровала пустые строки и нули из кортежа.

Все значения, которые не соответствуют действительности, считаются ложными. Ложные значения в Python это:

  • Константы, определенные как ложные: None и False.
  • 0 (ноль) любого числового типа.
  • Пустые последовательности и коллекции: “”(пустая строка), ()(пустой кортеж), [](пустой список), {}(пустой словарь), set()(пустой set), range(0)(пустая последовательность).

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

Чтобы отфильтровать кортеж:

  1. Используйте понимание списка для перебора кортежа.
  2. Возвращает по условию из списка.
  3. Используйте класс tuple() для преобразования списка в кортеж.
my_tuple = (1, 3, 5, 7, 9, 12)

filtered_tuple = tuple([item for item in my_tuple if item > 5])

# 👇️ (7, 9, 12)
print(filtered_tuple)

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

На каждой итерации мы проверяем, больше ли элемент кортежа 5, и возвращаем результат.

Последний шаг — использовать класс tuple() для преобразования списка в кортеж.

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

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

To top