Python过滤器的基本用途
示例
要filter基于某些条件丢弃序列的元素:
names = ['Fred', 'Wilma', 'Barney'] def long_name(name): return len(name) > 5
filter(long_name, names) #换下:['Barney'] [name for name in names if len(name) > 5] #等效列表理解 #换下:['Barney'] from itertools import ifilter ifilter(long_name, names) #作为生成器(类似于python3.xfilter内置) # Out: <itertools.ifilter at 0x4197e10> list(ifilter(long_name, names)) #等效于带有列表的过滤器 #换下:['Barney'] (name for name in names if len(name) > 5) #等效生成器表达式 # Out: <generator object <genexpr> at 0x0000000003FD5D38>
#除了旧版python2.xversions的选项之外,还有一个future_builtin函数: from future_builtins import filter filter(long_name, names) #与itertools.ifilter相同 # Out: <itertools.ifilter at 0x3eb0ba8>