Pythonfilter()函数的使用场景和实例
filter()函数是Python的内置函数之一,它主要用于过滤一个可迭代对象中的元素,并返回一个新的可迭代对象。filter()函数的语法如下:
filter(function, iterable)
其中,function是用来判断每个元素是否保留的函数,iterable是一个可迭代对象(如列表、元组、集合等)。filter()函数会依次对iterable中的每个元素调用function函数,如果函数返回True,则将该元素保留,否则剔除。最后,filter()函数返回一个包含保留元素的新可迭代对象。下面是一些使用filter()函数的常见场景和实例:
1. 过滤列表中的奇数
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def is_odd(num):
return num % 2 == 1
odd_nums = list(filter(is_odd, nums))
print(odd_nums)
# Output: [1, 3, 5, 7, 9]
在这个实例中,我们定义了一个is_odd()函数,用于判断一个数是否为奇数。然后,我们使用filter()函数过滤nums列表中的奇数,得到了新的列表odd_nums,只包含奇数。
2. 过滤字符串列表中的空字符串
strings = ["hello", "", "world", "", "python"] non_empty_strings = list(filter(None, strings)) print(non_empty_strings) # Output: ['hello', 'world', 'python']
在这个实例中,我们使用filter()函数过滤strings列表中的空字符串。因为None在Python中被视为False,所以filter()函数会剔除为空字符串的元素。
3. 过滤字典中的特定元素
students = [
{"name": "John", "age": 20, "grade": "A"},
{"name": "Jane", "age": 19, "grade": "B"},
{"name": "Mary", "age": 21, "grade": "A"},
{"name": "David", "age": 18, "grade": "C"}
]
def is_qualified(student):
return student["grade"] == "A" and student["age"] >= 20
qualified_students = list(filter(is_qualified, students))
print(qualified_students)
# Output: [{'name': 'Mary', 'age': 21, 'grade': 'A'}]
在这个实例中,我们定义了一个is_qualified()函数,用于判断一个学生是否达到了条件(成绩为"A"且年龄大于等于20)。然后,我们使用filter()函数过滤students列表中满足条件的学生,得到了新的列表qualified_students,只包含符合条件的学生信息。
4. 过滤集合中的偶数
nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
def is_even(num):
return num % 2 == 0
even_nums = set(filter(is_even, nums))
print(even_nums)
# Output: {2, 4, 6, 8, 10}
在这个实例中,我们使用filter()函数过滤集合nums中的偶数,得到了一个新的集合even_nums,只包含偶数。
总结来说,filter()函数适用于需要对一个可迭代对象中的元素进行条件筛选的场景。它可以让我们方便地过滤出符合条件的元素,减少了繁琐的判断和筛选工作。
