开发者

Python中的filter()函数的3种使用方式详解

开发者 https://www.devze.com 2025-05-18 09:20 出处:网络 作者: 青提.323
目录前言一.基本语法P二.3种使用方式1.使用lambda函数2.使用普通函数3.使用None,过滤掉假值(0、""、None、False)三.filter() vs 列表推导式 1.filter()方式:2.列表推导式方式:3. 选择建议四.常见
目录
  • 前言
  • 一.基本语法P
  • 二.3种使用方式
    • 1.使用lambda函数
    • 2.使用普通函数
    • 3.使用None,过滤掉假值(0、""、None、False)
  • 三.filter() vs 列表推导式 
    • 1.filter()方式:
    • 2.列表推导式方式:
    • 3. 选择建议
  • 四.常见应用
    • 1.过滤偶数
    • 2.过滤空字符串
    •  3.js过滤 None 值
    • 4. 过滤质数
  • 五.注意事项
    • 六.总结

      前言

      filter() 是 python 内置的高阶函数,用于 过滤序列(如列表、元组、字符串等),返回一个 迭代器(Python 3 中),其中包含满足条件的元素。它的核心功能是 筛选数据,类似于 SQL 中的 WHERE 条件。

      一.基本语法P

      filter(function, iterable)

      function: 一个函数(或 None),编程用于判断每个元素是否保留。

              如果 function 返回 True,则保留该元素。

              如果 function 返回 False,则丢弃该元素。

              如果 function 是 None,则直接过滤掉 False 值(如 0、""、None、False)。

             ​​

      iterable: 可迭代对象(如列表、元组、字符串等)

      返回值:

              Python 3:返回 filter 对象(迭代器),可以用 list() 转换成列表

      二.3种使用方式

      1.使用编程客栈lambda函数

      number=[1,2,3,4,5,6]
      filtered=filter(lambda x: x%2==0,number)
      
      print(list(filtered))
      #输出:[2, 4, 6]

      2.使用普通函数

      def is_even(x):
          return x % 2 ==0
      
      numbers=[1,2,3,4,5,6]
      filtered=filter(is_even,numbers)
      print(list(filtered))
      #输出:[2,4,6]

      3.使用None,过滤掉假值(0、""、None、False)

      data=[1," ",None,False,True,0,"hello"]
      filtered=filter(None,data)
      print(list(filtered))
      #输出:[1, ' ', True, 'hello']

      三.filter() vs 列表推导式 

            filter() 的功能可以用 列表推导式 实现,但 filter() 更函数式编程风格,而列表推导式更直观。

      1.filter()方式:

      number=[1,javascript2,3,4,5,6]
      filtered=filter(lambda x: x%2==0,number)
      
      print(list(filtered))
      #输出:[2, 4, 6]

      2.列表推导式方式:

      numbers=[1,2,3,4,5,6]
      
      filtered=[x for x in numbers if x % 2 == 0]
      print(list(filtered))
      #输出:[2,4,6,]

      3. 选择建议

              filter():适合 函数式编程 或 已有判断函数 的情况。

              列表推导式:适合 简单条件 或 需要更直观代码 的情况。

      四.常见应用

      1.过滤偶数

      numbers = [1, 2, 3, 4, 5, 6]
      evens = filter(lambda x: x % 2 == 0, numbers)
      print(list(evens))  # [2, 4, 6]

      2.过滤空字符串

      words=["hello"," ","","world","python"]
      non_empty=filter(lambda x : x.strip(),words)
      print(list(non_empty))
      #['hello', 'world', 'python']

       3.过滤 None 值

      data = [编程客栈1, None, "hello", 0, False, True]
      valid = filter(lambda x: x is not None, data)
      print(list(valid))  # [1, "hello", 0, False, True]

      4. 过滤质数

      def is_prime(n):
          if n <2:
              return False
          for i in range(2,int(n ** 0.5)+1):
              if n % i ==0:
                  return False
          return True
      
      numbers=range(1,21)
      primes=filter(is_prime,numbers)
      print(list(primes))
      #输出:[2, 3, 5, 7, 11, 13, 17, 19]

      关键点:

      质数定义:大于 1 的自然数,且只能被 1 和它本身整除。

      优化检查范围:

          只需检查 2 到 √n(int(n**0.5) + 1)的范围,因为如果 n 有因数,必定有一个 ≤ √n

       边界情况:

      n < 2:直接返回 False(1 不是质数)。

       n = 2:是质数,直接跳过循环返回 True

      五.注意事项

      1.filter() 返回的是迭代器(Python 3),如果需要列表,要用 list() 转换

      2.filter() 不会修改原数据,而是返回新数据。

      3.filter(None, iterable) 可以过滤掉假值(0、""、None、False)。

      4.filter() 比 for 循环更高效,因为它是 惰性计算(不立即执行,只在需要时计算)。

      六.总结

      Python中的filter()函数的3种使用方式详解

      到此这篇关于Python中的filter()函数的3种使用方式详解的文章就介绍到这了,更多相关Python中filter()函数详解内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      关注公众号