如何使用filter()函数过滤列表
filter()是Python内置的函数,可以通过某个条件过滤出列表中符合条件的元素,并返回一个新的列表。在日常开发中,我们经常需要通过某种方式对列表中的元素进行过滤,以便获取到我们想要的数据。
filter()函数的语法如下:
filter(function, iterable)
其中,function是一个函数,用于对iterable中的每个元素进行判断是否符合条件,返回True或False。iterable是一个可迭代对象,如列表、元组、字典等。
filter()函数会将iterable中的每个元素传入function中,如果function返回True则将该元素加入新的列表中,否则不加入。最后返回这个新的列表。
下面是一些示例代码,通过这些示例可以更好的理解如何使用filter()函数。
示例1:过滤掉列表中的偶数
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
res = filter(lambda x: x % 2 != 0, lst)
print(list(res))
输出结果为:[1, 3, 5, 7, 9]
在这个示例中,我们定义了一个lambda函数,这个函数用于判断参数x是否为奇数(即x % 2 != 0),如果是则返回True,否则返回False。然后我们将这个lambda函数和lst传入filter()函数中,filter()函数会过滤掉lst中的偶数,并将列表中剩余的元素转换为一个新的列表返回。
示例2:过滤掉列表中的None值
lst = [1, None, 3, None, 5, None, 7, None, 9, None]
res = filter(lambda x: x is not None, lst)
print(list(res))
输出结果为:[1, 3, 5, 7, 9]
在这个示例中,我们定义了一个lambda函数,这个函数用于判断参数x是否为None值(即x is not None),如果是则返回True,否则返回False。然后我们将这个lambda函数和lst传入filter()函数中,filter()函数会过滤掉lst中的None值,并将列表中剩余的元素转换为一个新的列表返回。
示例3:过滤掉字典中值为负数的元素
dct = {'a': 1, 'b': -2, 'c': 3, 'd': -4, 'e': 5}
res = {k: v for k, v in filter(lambda x: x[1] >= 0, dct.items())}
print(res)
输出结果为:{'a': 1, 'c': 3, 'e': 5}
在这个示例中,我们使用filter()函数过滤字典dct中值为负数的元素。首先我们将字典dct用items()函数转换为元组列表,然后使用lambda函数判断元组中第二个元素(即字典中的值)是否大于等于0,如果是则保留这个元组,否则过滤掉这个元组。最后我们将过滤后的元组转换为字典返回。
以上就是使用filter()函数过滤列表的一些基本示例。通过使用filter()函数,可以轻松对列表中的元素进行过滤,以便获取到我们想要的数据。
