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

如何用Python的filter()函数过滤掉列表中的空元素

发布时间:2023-05-27 07:53:13

Python中的filter()函数能够快速、方便地筛选出符合条件的元素,它的用法很简单:

filter(function, iterable)

其中,function 是一个函数,用来判断每个可迭代对象中的元素是否符合条件;iterable 是一个可迭代对象,例如列表、元组、字典、集合等等。

例如,我们可以使用 filter()函数来筛选出一个列表中所有的正整数:

def is_positive(x):
    return x > 0

my_list = [-1, 2, -3, 4, -5, 6]
positive_list = list(filter(is_positive, my_list))
print(positive_list) # [2, 4, 6]

在上面的例子中,我们定义了一个函数 is_positive(),用来判断一个数字是否为正数,然后使用 filter() 函数筛选出 my_list 中所有符合条件的元素(即大于 0 的元素)。

那么,如何用 filter() 函数过滤掉列表中的空元素呢?

我们可以通过定义一个新的函数来实现。我们假设空元素是指长度为 0 的字符串或者 None 类型的元素,那么可以这样写:

my_list = ['hello', '', None, 'world', '', 'python']
non_empty_list = list(filter(lambda x : x != '' and x is not None, my_list))
print(non_empty_list) # ['hello', 'world', 'python']

在上面的代码中,我们使用了 lambda 表达式来快速定义匿名函数,该函数会判断其中的元素是否为空字符串或 None。非空的元素会被保留下来,然后组成一个新的列表。

当然,在实际开发中,不同的数据集合可能需要不同的过滤条件,因此我们可以根据具体情况来定义不同的函数来进行过滤。

除了 filter() 函数之外,Python 中还有其他的函数可以过滤列表、元组等数据类型的元素,例如 map()、reduce() 等等。使用这些函数可以让我们的代码更加简洁、高效。