Python中的filter函数–如何使用filter函数来筛选序列
Python是一种高级编程语言,拥有丰富的内置函数和库。其中filter()函数可以筛选单个序列并返回一个新的序列,满足特定条件的元素会被保留下来,而不满足条件的元素会被过滤掉,这在很多场景下都非常有用。本文将介绍Python中的filter()函数,并举例说明如何使用它筛选序列。
1. filter()函数的语法
filter(function,sequence):该函数表示,对序列sequence进行筛选操作,通过function进行筛选,返回一个新的序列。
参数解释:
function:函数名称,用来筛选序列的元素。
sequence:序列,筛选的目标。
函数主要有两种,一是使用Python内置的函数,另外一种是使用自定义的函数,下面分别进行讲解。
2. 通过内置函数进行筛选
Python提供了一些内置函数,可以直接用于筛选。
例如:
(1)移除一个序列中的所有0值:
a = [1,2,0,4,0,3,6]
result = filter(lambda x: x!= 0, a)
print(list(result))
输出结果为:
[1, 2, 4, 3, 6]
(2)移除一个字符串序列中的所有空字符串:
a = ["hello", "", "world", " ", "work"]
result = filter(lambda x: x.strip() != "", a)
print(list(result))
输出结果为:
['hello', 'world', 'work']
(3)筛选出所有的偶数:
a = [1,2,3,4,5,6,7,8]
result = filter(lambda x: x%2 == 0, a)
print(list(result))
输出结果为:
[2, 4, 6, 8]
3. 通过自定义函数进行筛选
自定义函数可以更好地适应特定的业务场景,下面举例说明。
例如:
(1)筛选出在一个列表中长度大于2的字符串:
def filter_func(a):
if len(a) > 2:
return True
else:
return False
a = ["hello", "world", "python", "go"]
result = filter(filter_func, a)
print(list(result))
输出结果为:
['hello', 'world', 'python']
(2)筛选出在一个列表中所有的质数:
def is_prime(n):
if n < 2:
return False
for i in range(2, n):
if n%i == 0:
return False
return True
a = [1,2,3,4,5,6,7,8,9,10]
result = filter(is_prime, a)
print(list(result))
输出结果为:
[2, 3, 5, 7]
通过以上两个例子的实现,我们可以发现自定义函数的灵活性非常高,可以用来完成更加复杂的筛选操作。
4. 总结
filter()函数是Python中非常实用的一个函数,可以用来筛选单个序列并返回一个新的序列,满足特定条件的元素会被保留下来,而不满足条件的元素会被过滤掉。使用内置函数以及自定义函数都可以达到筛选序列的目的,而自定义函数的灵活性更高,可以更好地适应特定的业务场景。在实际开发中,可以根据具体需求选择不同的筛选方式。
