欢迎访问宙启技术站
智能推送

使用Pythonfilter()函数过滤序列的方法和示例

发布时间:2023-06-18 19:30:28

Python中内置的filter()函数可以用来过滤序列中的元素,只留下满足特定条件的元素,最终返回一个新的序列。

filter(func, seq) 函数接收两个参数:

- func:用来筛选序列的函数,该函数接收一个参数(序列中的元素),返回一个布尔值(True或False),True表示保留该元素,False表示删除该元素。

- seq:待筛选的序列,可以是列表、元组、字符串等任意序列。

函数返回一个迭代器,需要使用list()函数将其转换为列表,方可打印。

下面是filter()函数的示例:

示例1:保留所有大于等于5的元素

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = filter(lambda x: x >= 5, nums)
print(list(result))

输出:

[5, 6, 7, 8, 9, 10]

解释:

我们定义了一个lambda函数x >= 5来检查nums中的每个元素是否大于等于5。filter()函数将会保留所有函数返回True的元素,因此,返回的序列中只有大于等于5的元素。

示例2:保留所有偶数

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = filter(lambda x: x % 2 == 0, nums)
print(list(result))

输出:

[2, 4, 6, 8, 10]

解释:

lambda函数x % 2 == 0检查nums中的每个元素是否为偶数。filter()函数将会保留所有函数返回True的元素,因此,返回的序列中只有偶数。

示例3:保留所有大写字母

s = "Hello WORLD"
result = filter(lambda x: x.isupper(), s)
print(list(result))

输出:

['H', 'W', 'O', 'R', 'L', 'D']

解释:

lambda函数x.isupper()检查s中的每个字符是否为大写字母。filter()函数将会保留所有函数返回True的元素,因此,返回的序列中只有大写字母。

通过上述示例可以看出,filter()函数可以用来过滤列表、元组、字符串等序列中的元素,只留下符合条件的元素。使用filter()函数可以让代码更加简洁和高效,避免了大量的for循环或条件判断语句。