📜  Python filter()(1)

📅  最后修改于: 2023-12-03 15:04:05.097000             🧑  作者: Mango

Python filter()

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() 用于过滤序列。