Python:Библиотека/3/Модули/builtins/filter(): различия между версиями
Материал из Онлайн справочника
Myagkij (обсуждение | вклад) Нет описания правки |
Myagkij (обсуждение | вклад) (→Пример) |
||
Строка 21: | Строка 21: | ||
===№1=== | ===№1=== | ||
Дана последовательность чисел: | |||
<syntaxhighlight lang="python" enclose="div"> | <syntaxhighlight lang="python" enclose="div"> | ||
nums = [111, -4, 0, 10, 56, -38, 11, 78, -9, 100, 99, 1,2,3] | |||
</syntaxhighlight> | |||
Напишем простую функцию для фильтра, которая возвращает True, если ей передали число больше 0: | |||
<syntaxhighlight lang="python" enclose="div"> | |||
def positive_numbers(num): | |||
return num > 0 | |||
</syntaxhighlight> | |||
Воспользуемся списковым включением и сгенерируем список положительных чисел: | |||
<syntaxhighlight lang="python" enclose="div"> | |||
[i for i in filter(positive_numbers, nums)] | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 29: | Строка 44: | ||
<syntaxhighlight lang="python" enclose="div"> | <syntaxhighlight lang="python" enclose="div"> | ||
[111, 10, 56, 11, 78, 100, 99, 1, 2, 3] | |||
</syntaxhighlight> | </syntaxhighlight> | ||
===№2=== | ===№2=== | ||
Если аргумент func равен None, то filter проверяет истинность элементов подобно следующему генератору списка: | |||
<syntaxhighlight lang="python" enclose="div"> | <syntaxhighlight lang="python" enclose="div"> | ||
[i for i in seq if item] | |||
</syntaxhighlight> | |||
Проверим это на последовательности чисел: | |||
<syntaxhighlight lang="python" enclose="div"> | |||
nums = [111, -4, 0, 10, 56, -38, 11, 78, -9, 100, 99, 1,2,3] | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Генерируем список: | |||
<syntaxhighlight lang="python" enclose="div"> | <syntaxhighlight lang="python" enclose="div"> | ||
[i for i in filter(None, nums)] | |||
</syntaxhighlight> | |||
Результат: | |||
<syntaxhighlight lang="python" enclose="div"> | |||
[111, -4, 10, 56, -38, 11, 78, -9, 100, 99, 1, 2, 3] | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Версия от 21:48, 30 апреля 2020
Проверка/Оформление/Редактирование: Мякишев Е.А.
filter()
filter(func, seq)
Возвращает итератор, который содержит элементы seq, для которых func возвращает истинное значение.
Параметры
func - функция
seq - любой тип последовательности
Пример
№1
Дана последовательность чисел:
nums = [111, -4, 0, 10, 56, -38, 11, 78, -9, 100, 99, 1,2,3]
Напишем простую функцию для фильтра, которая возвращает True, если ей передали число больше 0:
def positive_numbers(num):
return num > 0
Воспользуемся списковым включением и сгенерируем список положительных чисел:
[i for i in filter(positive_numbers, nums)]
Вывод:
[111, 10, 56, 11, 78, 100, 99, 1, 2, 3]
№2
Если аргумент func равен None, то filter проверяет истинность элементов подобно следующему генератору списка:
[i for i in seq if item]
Проверим это на последовательности чисел:
nums = [111, -4, 0, 10, 56, -38, 11, 78, -9, 100, 99, 1,2,3]
Генерируем список:
[i for i in filter(None, nums)]
Результат:
[111, -4, 10, 56, -38, 11, 78, -9, 100, 99, 1, 2, 3]
См.также
Внешние ссылки