Python中的Filter函数:按条件筛选列表
发布时间:2023-06-15 08:42:26
在Python中,Filter函数是一种常用的函数,可以按照定义的条件,筛选序列中符合条件的元素并返回新的序列。
Filter函数的用法:
filter(function, iterable)
其中,function是指筛选的条件函数,iterable是指待筛选的序列。Filter函数会遍历源序列,对每个元素都执行一遍条件函数,如果返回True,则该元素会被保留,否则会被剔除。最终,Filter函数返回一个新的序列,其中只包含符合条件的元素。
举个例子:
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def is_odd(x):
return x % 2 == 1
result = filter(is_odd, lst)
print('筛选结果:', list(result))
运行代码后可以看到,输出结果为:
筛选结果: [1, 3, 5, 7, 9]
这是因为在筛选序列lst时,条件函数is_odd将只保留那些余数为1的元素,也就是所有奇数。
除了用函数来自定义筛选条件外,Filter函数还支持使用lambda表达式来进行筛选。比如,上面的代码可以简化为:
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = filter(lambda x: x % 2 == 1, lst)
print('筛选结果:', list(result))
这里使用了lambda表达式来实现is_odd函数的功能。
当然,在实际应用中,Filter函数的功能不限于筛选奇数或偶数这样简单的条件。我们可以根据具体需要,自行定义各种条件函数,从而实现不同的筛选目的。
比如,我们可以按照字符串长度对一个字符串列表进行筛选:
lst = ['hello', 'world', 'python', 'code', 'algorithm', 'apple']
def length_is_even(s):
return len(s) % 2 == 0
result = filter(length_is_even, lst)
print('筛选结果:', list(result))
输出结果为:
筛选结果: ['world', 'python', 'code']
同样的,我们也可以使用lambda表达式来实现同样的功能:
lst = ['hello', 'world', 'python', 'code', 'algorithm', 'apple']
result = filter(lambda s: len(s) % 2 == 0, lst)
print('筛选结果:', list(result))
输出结果与之前一致。
除了筛选列表,Filter函数还可以用于筛选其他序列类型,比如元组和集合等。
tup = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
result = filter(lambda x: x % 3 == 0, tup)
print('筛选结果:', list(result))
输出结果为:
筛选结果: [3, 6, 9]
总的来说,Filter函数是Python中非常实用的函数,可帮助我们轻松地根据条件筛选列表,提高代码的效率和可读性。
