Python内置的filter()
函数能够从可迭代对象(如字典、列表)中筛选某些元素,并生成一个新的迭代器。可迭代对象是一个可以被“遍历”的Python对象,也就是说,它将按顺序返回各元素,这样我们就可以在fo
r循环中使用它。
filter()
函数的基本语法是:
filter(function, iterable)
返回一个可迭代的filter对象,可以使用list()
函数将其转化为列表,这个列表包含过滤器对象中返回的所有的项。
filter()
函数所提供的过滤方法,通常比用列表解析更有效,特别是当我们处理更大的数据集时。例如,列表解析会生成一个新列表,这会增加该处理的运行时间。当列表解析执行完毕它的表达式后,内存中会有两个列表。但是,filter()
将生成一个简单的对象,该对象包含对原始列表的引用、提供的函数以及原始列表中位置的索引,这样操作占用的内存更少。
下面介绍filter()
的不同用法。
在filter()
中使用特殊函数
filter()
的第一个参数是一个函数,用它来决定第二个参数所引用的可迭代对象中的每一项的去留。此函数被调用后,当返回False
时,第二个参数中的可迭代对象里面相应的值就会被删除。针对这个函数,可以是一个普通函数,也可以使用lambda
函数,特别是当表达式不那么复杂的时候。
下面是filter()
中使用lambda
函数的方法:
filter(lambda item: item[] expression, iterable)
将下面的列表,用于lambda
函数,根据lambda
函数表达式筛选列表中的元素。
creature_names = ['