Python的filter()函数用法详解
Python中的filter()函数可以让我们过滤一个序列中不符合条件的元素,返回一个新的序列。这个函数通常和lambda表达式一起使用。
filter()函数的用法非常简单,它有两个参数, 个参数是一个函数,第二个参数是一个序列。
语法如下:
filter(function, iterable)
其中function是一个函数,用于过滤序列中的元素。iterable是一个序列,可以是列表、元组、字符串等。
filter()函数返回的是一个filter对象,我们可以使用list()函数将其转换为列表。以下是一个简单的例子,使用filter()函数过滤掉列表中的偶数。
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
new_lst = list(filter(lambda x: x % 2 != 0, lst))
print(new_lst)
输出结果为:[1, 3, 5, 7, 9]
这段代码的作用是过滤掉lst序列中的偶数,返回一个新的序列。注意:在lambda表达式中,如果x%2的结果为0,则表示x是偶数,反之则为奇数。
除了lambda表达式以外,我们还可以使用普通的函数来作为filter()函数的 个参数。以下是一个示例代码,使用一个函数过滤列表中的元素。
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def is_odd(x):
return x % 2 != 0
new_lst = filter(is_odd, lst)
print(list(new_lst))
输出结果为:[1, 3, 5, 7, 9]
可以看出,最终结果和使用lambda表达式的结果是一样的。这个例子中,我们使用了一个名为is_odd()的函数来过滤序列中的元素。
除了过滤列表中的元素,filter()函数还可以过滤字符串中的字符。以下是一个示例代码,使用filter()函数过滤掉字符串中的数字。
str = "abc123def456"
new_str = ''.join(filter(lambda x: not x.isdigit(), str))
print(new_str)
输出结果为:abcdef
这个例子中,我们使用isdigit()函数判断字符串中的字符是否为数字,如果是,则过滤掉该字符,否则保留该字符。最终结果是一个新的字符串,其中不包含数字。
总结一下,Python的filter()函数可以让我们过滤序列中不符合条件的元素,返回一个新的序列。这个函数非常强大,可以过滤列表、元组、字符串等各种类型的序列。使用filter()函数的时候,一般都会与lambda表达式配合使用,这样可以更加简洁地编写代码。
