2024年3月20日发(作者:)

函数filter

函数filter是一种Python内置函数,它用于过滤序列中的元素,只留下符合条件的

元素,最终返回一个新的序列。

语法:filter(function, iterable)

其中,function为一个函数,接受一个参数,并返回True或False;iterable为一

个可迭代对象,例如列表、元组、字典等。

对于可迭代对象iterable中的每一个元素,调用function函数进行判断,如果返回

True,则该元素被保留,否则该元素被删除。最终返回一个新的序列,其中只包含被保留

的元素。

例如,使用filter函数过滤一个列表中的奇数元素:

```

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]

res = filter(lambda x : x % 2 == 1, a)

print(list(res)) # 输出[1, 3, 5, 7, 9]

```

在上面的代码中,使用lambda表达式定义一个函数,判断该元素是否为奇数。然后

将a序列作为可迭代对象,调用filter函数进行过滤,将符合条件的元素保留下来,最

后通过list函数将结果转换为列表并输出。

1. 过滤序列中的元素:在数据处理中,经常需要对序列进行过滤操作,例如筛选出

符合特定条件的数据,filter函数就是这样一种工具。

在上面的例子中,使用lambda表达式判断元素的类型,只保留整数元素,最终得到

一个新的序列。

2. 简化列表操作:使用列表推导式可以快速地操作列表元素,但代码可能会显得不

太清晰。使用filter函数可以提高代码的可读性。

例如,将一个列表中的元素全都改为大写:

```

a = ['apple', 'banana', 'cherry']

res = filter(None, map(, a))

print(list(res)) # 输出['APPLE', 'BANANA', 'CHERRY']

```

在上面的代码中,使用map函数将元素转换为大写字母,然后使用filter函数过滤

None值,最终输出结果。

3. 替代for循环:使用filter函数可以将循环操作简单化,提高代码的简洁性。

例如,使用filter函数将字典中的中文名字替换为英文名字:

```

name_dict = {'张三': 'Tom', '李四': 'Jerry', '王五': 'Bill'}

res = filter(lambda x : x[0] == '张', name_())

for name in res:

name_dict[name] = 'John'

print(name_dict) # 输出:{'张三': 'John', '李四': 'Jerry', '王五':

'Bill'}

```

在上面的代码中,使用lambda表达式判断字典中的键是否以“张”开头,过滤出符

合条件的键值,并将其替换为“John”。

总结:

函数filter在Python编程中有着广泛的应用。它可以用来过滤序列中的元素,简化

列表操作,替代for循环等。学会了函数filter的使用方法,可以提高程序的效率和代

码的简洁性。