Python程序 用于从列表中删除空值
在Python编程中,经常会遇到需要从列表中删除空值的情况。例如,从Excel表格中读取数据存储到Python的列表中时,可能会出现某些单元格为空的情况,此时就需要将这些空值从列表中删除。
下面我们将介绍如何使用Python编写代码,从列表中删除空值。
简单方法:使用列表推导式
在Python中,我们可以使用列表推导式来过滤掉列表中的空值。具体实现方法如下:
>>> a = [1, 2, None, 8, None, 10]
>>> b = [i for i in a if i is not None]
>>> b
[1, 2, 8, 10]
在上面的代码中,我们先定义了一个包含空值的列表a,然后使用列表推导式,将a中非空的元素存储到新列表b中,最后输出结果b。
逐个删除:使用循环
上面的方法虽然简单易行,但只适用于列表中包含None的情况。如果列表中还包含其他类型的空值,例如空字符串,空列表等,就不能使用上述简单方法,需要使用循环逐个删除空值。
>>> a = [1, '', 3, [], None, 7]
>>> i = 0
>>> while i < len(a):
... if not a[i]:
... del a[i]
... else:
... i += 1
>>> a
[1, 3, 7]
在上面的代码中,我们使用while循环和条件语句来逐个判断列表a中的元素是否为空值。如果为空值,则使用del语句从列表中删除该元素;否则将i加1,继续判断下一个元素。
定义函数:重复使用代码
如果需要经常从列表中删除空值,则可以将上述代码封装为一个函数,以便重复使用。实现方法如下:
def remove_empty_value(a):
i = 0
while i < len(a):
if not a[i]:
del a[i]
else:
i += 1
return a
# 使用函数删除空值
a = [1, '', 3, [], None, 7]
b = remove_empty_value(a)
print(b)
在上面的代码中,我们先定义了一个名为remove_empty_value的函数,该函数接收一个列表a作为参数,返回删除空值后的新列表。然后我们使用该函数,将列表a作为参数传递给该函数,得到删除空值后的新列表b,并输出结果。
使用filter()函数:更简洁的方法
在Python中,还可以通过使用filter()函数来过滤掉列表中的空值。
>>> a = [1, '', 3, [], None, 7]
>>> b = list(filter(None, a))
>>> b
[1, 3, 7]
在上面的代码中,我们使用了filter()函数,将原列表a中不为空的值过滤出来并存储到新列表b中。需要注意的是,返回值为一个迭代器对象,需要使用list()函数将其转换为列表。
结论
Python提供了多种方法用于从列表中删除空值,我们可以根据实际情况选择不同的方法。如果列表中只包含None类型的空值,可以使用简单的列表推导式;否则可以使用循环逐个删除或使用filter()函数过滤掉空值。需要从多个列表中删除空值时,可以封装上述代码为一个函数,以便重复使用。