Python中使用filter()函数的技巧和示例
发布时间:2023-07-30 16:53:17
filter()函数是Python内置的用于过滤元素的函数,它接受一个函数和一个可迭代对象作为参数,返回一个包含满足条件的元素的新可迭代对象。filter()函数的语法如下:
filter(function, iterable)
其中,function是一个返回布尔值的函数,用于判断可迭代对象中的元素是否满足条件;iterable是一个可迭代对象,可以是列表、元组、字符串等。
下面是一些使用filter()函数的实际示例和技巧:
1. 过滤奇数或偶数:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] odd_numbers = list(filter(lambda x: x % 2 != 0, numbers)) # 过滤出奇数 even_numbers = list(filter(lambda x: x % 2 == 0, numbers)) # 过滤出偶数 print(odd_numbers) # 输出: [1, 3, 5, 7, 9] print(even_numbers) # 输出: [2, 4, 6, 8, 10]
2. 过滤包含特定字符的字符串:
names = ['Alice', 'Bob', 'Charlie', 'Dave'] filtered_names = list(filter(lambda name: 'a' in name, names)) # 过滤出包含字母'a'的名字 print(filtered_names) # 输出: ['Alice', 'Charlie']
3. 过滤出满足多个条件的元素:
def has_even_length_and_starts_with_a(s):
return len(s) % 2 == 0 and s.startswith('a')
words = ['apple', 'banana', 'avocado', 'cherry', 'apricot']
filtered_words = list(filter(has_even_length_and_starts_with_a, words)) # 过滤出长度为偶数且以字母'a'开头的单词
print(filtered_words) # 输出: ['apple', 'avocado']
4. 过滤空字符串:
strings = ['foo', '', 'bar', '', 'baz'] filtered_strings = list(filter(None, strings)) # 过滤掉空字符串 print(filtered_strings) # 输出: ['foo', 'bar', 'baz']
5. 使用filter()函数去除重复元素:
numbers = [1, 2, 3, 4, 4, 5, 5, 6, 6, 6] unique_numbers = list(filter(lambda x: numbers.count(x) == 1, numbers)) # 过滤出不重复的元素 print(unique_numbers) # 输出: [1, 2, 3]
总结:
使用filter()函数可以方便地过滤出满足指定条件的元素。它接受一个返回布尔值的函数作为参数,这个函数用于判断可迭代对象中的元素是否满足条件。可以使用lambda表达式来定义筛选条件,也可以定义一个独立的函数来作为参数。filter()函数返回一个新的可迭代对象,你可以将其转换为列表或其他类型的容器。
