Как говорится, не пределу совершенства.
Наткнулся на функцию filter() в Python.
Принимая на вход 2 параметра, первый - функцию, которая возвращает булево значение, а второй - итерируемый объект,
она применяет функцию к списку.
Можно использовать вот так:
Если нужно получить из списка только значения, кратные трём, то сначала описываем функцию
Python:
def three_multiply(target_x):
return target_x %3 == 0
Функция принимает на вход число, если оно делится на 3 без остатка, возвращается True, иначе - False
А теперь, применив функцию filter, можем получить только числа кратные трём
Python:
mas = [1,2,3,4,5,6,7]
output_list = list(filter(three_multiple, mas))
print(output_list)
[3, 6]
Познав дзен Python'a и программирования в целом (а так же изучив канал
Олега Молчанова)
Можно весь код выше уместить в одну строку:
Python:
mas = [1,2,3,4,5,6,7]
ouput_list = list(filter(lambda target_x: target_x %3 == 0, mas))
#В списке ouput_list мы получим, нужные данные
[3, 6]
Если нужно получить числа, у которых остаток деления на 3, не равен 0,
банально меняем знак равенства
Python:
mas = [1,2,3,4,5,6,7]
print(list(filter(lambda target_x: target_x %3 != 0, mas)))
[1, 2, 4, 5, 7]
Если расписать подробно, то
1. команда print() выводит на экран
2. данные, которые преобразованы в список методом list()
3. в котором используется функция filter(), принимающая в виде параметров
3.1. анонимную функцию (lambda), которая
4.1. принимает на вход target_x
4.2 и возвращает булево значение результата выражения target_x %3 != 0
3.2.и массив mas
Результат этого выражения можно присвоить какой-то переменной:
Python:
mas = [1,2,3,4,5,6,7]
new_list = list(filter(lambda target_x: target_x %3 != 0, mas))
print(new_list)
[1, 2, 4, 5, 7]
Такой же список можно получить и с помощью генератора списков
Python:
mas = [1,2,3,4,5,6,7]
new_list = [ target_x for target_x in mas if target_x %3 != 0 ]
print(new_list)
[1, 2, 4, 5, 7]