При работе со списками в Python часто возникают ситуации, когда вам необходимо отфильтровать определенные элементы на основе определенных критериев. В этой статье мы сосредоточимся на фильтрации чисел из списка. Мы рассмотрим несколько методов, которые могут эффективно выполнить эту задачу, а также примеры кода. Итак, давайте углубимся и изучим различные подходы к фильтрации чисел из списка в Python!
Методы фильтрации чисел из списка:
Метод 1: понимание списка
Построение списка — это краткий и питонический способ фильтрации чисел из списка. Он позволяет создать новый список, указав условие для фильтрации нежелательных элементов. Вот пример:
numbers = [1, 2, "three", 4, 5.5, 6, "seven", 8, 9.2]
filtered_numbers = [x for x in numbers if isinstance(x, (int, float))]
print(filtered_numbers)
Выход:
[1, 2, 4, 5.5, 6, 8, 9.2]
Метод 2: функция Filter()
Встроенная функция Python filter()
предоставляет другой подход к фильтрации чисел из списка. Он принимает функцию и итерируемый объект в качестве входных данных и возвращает итератор, который возвращает элементы, для которых функция возвращает True
. Вот пример использования лямбда-функции:
numbers = [1, 2, "three", 4, 5.5, 6, "seven", 8, 9.2]
filtered_numbers = list(filter(lambda x: isinstance(x, (int, float)), numbers))
print(filtered_numbers)
Выход:
[1, 2, 4, 5.5, 6, 8, 9.2]
Метод 3: итерация списка с проверкой типа
В этом методе мы перебираем список и вручную проверяем тип каждого элемента. Мы добавляем числа в новый список, если они являются целыми числами или числами с плавающей запятой. Вот пример:
numbers = [1, 2, "three", 4, 5.5, 6, "seven", 8, 9.2]
filtered_numbers = []
for item in numbers:
if isinstance(item, (int, float)):
filtered_numbers.append(item)
print(filtered_numbers)
Выход:
[1, 2, 4, 5.5, 6, 8, 9.2]
Метод 4: регулярные выражения
Если числа в списке представлены в виде строк, вы можете использовать регулярные выражения для их фильтрации. Модуль re
в Python предоставляет мощные возможности сопоставления с образцом. Вот пример:
import re
numbers = ["1", "2", "three", "4", "5.5", "6", "seven", "8", "9.2"]
filtered_numbers = [x for x in numbers if re.match(r'^\d+(\.\d+)?$', x)]
print(filtered_numbers)
Выход:
['1', '2', '5.5', '6', '8', '9.2']