📅  最后修改于: 2023-12-03 15:04:05.097000             🧑  作者: Mango
filter()
是 Python 内置函数之一。它建立了一个迭代器,该迭代器使用用户定义的函数过滤一个序列,并返回一个只包含过滤后的元素的新序列。
filter(function, iterable)
function
: 用于过滤序列的函数。iterable
: 要过滤的序列。filter()
会返回一个只包含过滤后元素的新迭代器。
# 过滤奇数
def filter_odd(x):
return x % 2 != 0
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
result = filter(filter_odd, lst)
print(list(result)) # [1, 3, 5, 7, 9]
map()
和filter()
使用map()
或列表解析也可以达到相同的效果,但是它们是两种不同的编程习惯。通常,当需要对序列中的每个元素执行相同的操作时,使用map()
; 当需要过滤序列时,使用filter()
. 而使用列表解析则可以发挥二者的功能。以下是使用这三种方法实现的示例:
# 列表解析实现过滤奇数
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
result = [x for x in lst if x % 2 != 0]
print(result) # [1, 3, 5, 7, 9]
# map()实现过滤奇数
def filter_odd(x):
return x % 2 != 0
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
result = list(map(filter_odd, lst))
print(list(filter(None, result))) # [1, 3, 5, 7, 9]
# filter()实现过滤奇数
def filter_odd(x):
return x % 2 != 0
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
result = filter(filter_odd, lst)
print(list(result)) # [1, 3, 5, 7, 9]
filter()
是 Python 内置函数之一,用于过滤序列,并返回一个只包含过滤后的元素的新序列。它可以和 map()
和列表解析一起使用,但通常情况下, map()
用于对序列中的每个元素执行相同的操作,而 filter()
用于过滤序列。