Python:Библиотека/3/Модули/builtins/filter(): различия между версиями

Материал из Онлайн справочника
Перейти к навигации Перейти к поиску

Строка 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>
  

Версия 20: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]

См.также

Внешние ссылки