从 Python 列表中删除 None 值

在 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值:

  1. 使用filter()函数过滤掉None值。
  2. 使用list()该类将过滤器对象转换为列表。
  3. 新列表将不包含任何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值:

  1. 声明一个存储空列表的新变量。
  2. 遍历原始列表。
  3. 检查每个项目是否不是None
  4. 使用该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值:

  1. 使用for循环迭代列表的副本。
  2. 检查每个值是否为None.
  3. 使用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()方法迭代列表的副本。

如果您在迭代时尝试从原始列表中删除元素,您可能会遇到难以定位的错误。

发表评论