在 Python 中从列表中删除 None 值
Remove None values from a list in Python
使用列表理解从 Python 中的列表中删除 None 值,例如
new_list = [i for i in my_list if i is not None]
. 新列表将包含原始列表中的所有值,值除外None
。
主程序
my_list = [1, None, 3, None, 8, None] new_list = [i for i in my_list if i is not None] print(new_list) # 👉️ [1, 3, 8]
列表推导用于对每个元素执行一些操作,或者选择满足条件的元素子集。
我们使用列表理解从原始列表中选择所有不是
None
.此解决方案不会改变原始列表,它会返回一个不包含任何None
值的新列表。
或者,您可以使用该filter
功能。
使用 filter() 从列表中删除 None 值
从列表中删除None
值:
- 使用
filter()
函数过滤掉None
值。 - 使用
list()
该类将过滤器对象转换为列表。 - 新列表将不包含任何
None
值。
主程序
my_list = [1, None, 3, None, 8, None] new_list = list(filter(lambda x: x is not None, my_list)) print(new_list) # 👉️ [1, 3, 8]
filter函数接受一个函数和一个可迭代对象作为参数,并从可迭代对象的元素构造一个迭代器,函数返回一个真值。
对列表中的每个项目调用 lambda 函数,检查该值是否不是
None
并返回结果。最后一步是使用list()
类将filter
对象转换为列表。
或者,您可以使用简单的for
循环。
使用 for 循环从列表中删除 None 值
从列表中删除None
值:
- 声明一个存储空列表的新变量。
- 遍历原始列表。
- 检查每个项目是否不是
None
。 - 使用该
list.append()
方法将满足条件的项目追加到新列表中。
主程序
my_list = [1, None, 3, None, 8, None] new_list = [] for item in my_list: if item is not None: new_list.append(item) print(new_list) # 👉️ [1, 3, 8]
我们使用for
循环遍历列表。
在每次迭代中,我们检查当前项目是否不是
None
,如果满足条件,我们将项目附加到新列表。新列表将不包含任何None
值。
或者,您可以改变原始列表。
从列表中删除None
值:
- 使用
for
循环迭代列表的副本。 - 检查每个值是否为
None
. - 使用
list.remove()
方法从列表中删除None
值。
主程序
my_list = [1, None, 3, None, 8, None, None, None] for item in my_list.copy(): if item is None: my_list.remove(item) print(my_list) # 👉️ [1, 3, 8]
None
此示例从原始列表中删除值。
我们使用该list.copy()
方法来获取列表的副本。
list.copy方法返回调用该方法的对象的浅表副本。
这是必要的,因为我们不允许在遍历列表时从列表中删除元素。
但是,我们可以遍历列表的副本并从原始列表中删除元素。
主程序
my_list = [1, None, 3, None, 8, None, None, None] for item in my_list.copy(): if item is None: my_list.remove(item) print(my_list) # 👉️ [1, 3, 8]
在每次迭代中,我们检查当前项目是否存在None
,如果满足条件,我们将使用该list.remove()
方法将其删除。
list.remove()方法从列表中
删除第一项,其值等于传入的参数。
该remove()
方法改变原始列表并返回None
。
在迭代时从列表中删除项目时要注意的最重要的事情是使用list.copy()
方法迭代列表的副本。
如果您在迭代时尝试从原始列表中删除元素,您可能会遇到难以定位的错误。