filter()函数

2017年8月20日 19:48 547  0  python 内置函数

filter()函数,顾名思义,是python內建里一种过滤序列的函数。

filter(func, seq)

  • 用于过滤(筛选)序列
  • 接受一个函数和一个序列
  • 把传入的函数依次作用于每个元素
  • 根绝返回值是True还是False决定保留还是丢弃该元素
  • filter()返回的是一个Iterator,是一个惰性序列
  • 若要强迫完成计算结果,需用list()获得所有结果并返回list

ex.1:c从一个列表中过滤掉偶数,留下奇数

def is_odd(x):
  return x % 2 == 1

list(filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9])        
# [1, 3, 5, 7, 9]   

ex.2:过滤掉一个序列中的空字符串

def is_not_empty(x):
  return x and x.strip()  # strip()主要用来切除空格  None调用strip()会报错

list(filter(is_not_empty, ['a', '', 'B', 'c', 'None', '  ']))
# ['a', 'B', 'c']
# 这里x与x.strip()的位置不可调换,and是从左到右执行,若s为None则会报错