从 Python 中的元组列表中删除空元组

从 Python 中的元组列表中删除空元组

Remove the empty tuples from list of tuples in Python

使用列表理解从元组列表中删除空元组,例如new_list = [item for item in list_of_tuples if item]. 列表理解将返回一个不包含任何空元组的新列表。

主程序
# ✅ Remove empty tuples from a list (using list comprehension) list_of_tuples = [('one',), (), ('two',), (), ('three',)] new_list = [item for item in list_of_tuples if item] print(new_list) # 👉️ [('one',), ('two',), ('three',)] # --------------------------------------------- # ✅ Remove empty tuples from a list (using filter()) new_list = list(filter(None, list_of_tuples)) print(new_list) # 👉️ [('one',), ('two',), ('three',)] # --------------------------------------------- # ✅ Remove empty tuples from a list (using for loop) for item in list_of_tuples.copy(): if item == (): list_of_tuples.remove(item) print(list_of_tuples) # 👉️ [('one',), ('two',), ('three',)]

第一个示例使用列表理解从元组列表中删除空元组。

列表推导用于对每个元素执行某些操作或选择满足条件的元素子集。
主程序
list_of_tuples = [('one',), (), ('two',), (), ('three',)] new_list = [item for item in list_of_tuples if item] print(new_list) # 👉️ [('one',), ('two',), ('three',)]

在每次迭代中,我们检查当前项是否为真并返回结果。

空元组是虚假值,因此它们会被过滤掉。

列表理解创建一个新列表,它不会改变原始列表。

如果要从原始列表中删除空元组,请使用列表切片。

主程序
list_of_tuples = [('one',), (), ('two',), (), ('three',)] list_of_tuples[:] = [item for item in list_of_tuples if item] print(list_of_tuples) # 👉️ [('one',), ('two',), ('three',)]

我们使用my_list[:]语法来获取代表整个列表的切片,因此我们可以直接分配给变量。

切片my_list[:]代表整个列表,所以当我们在左侧使用它时,我们正在分配给整个列表。

这种方法改变了原始列表的内容。

或者,您可以使用该filter()功能。

使用 filter() 从元组列表中删除空元组

从元组列表中删除空元组:

  1. 使用filter()函数过滤掉空元组。
  2. 使用list()该类将filter对象转换为列表。
  3. 新列表将不包含任何空元组。
主程序
list_of_tuples = [('one',), (), ('two',), (), ('three',)] new_list = list(filter(None, list_of_tuples)) print(new_list) # 👉️ [('one',), ('two',), ('three',)]

我们使用该filter()函数从元组列表中删除空元组。

filter函数接受一个函数和一个可迭代对象作为参数,并从可迭代对象的元素构造一个迭代器,函数返回一个真值。

如果您传递None函数参数,则 iterable 的所有虚假元素都将被删除。

空元组是一个假值,因此所有空元组都会被删除。

最后一步是使用list()类将filter对象转换为列表。

或者,您可以使用for循环。

使用 for 循环从元组列表中删除空元组#

从元组列表中删除空元组:

  1. 使用for循环迭代列表的副本。
  2. 在每次迭代中,检查当前项是否为空元组。
  3. 使用list.remove()方法删除空元组。
主程序
list_of_tuples = [('one',), (), ('two',), (), ('three',)] for item in list_of_tuples.copy(): if item == (): list_of_tuples.remove(item) print(list_of_tuples) # 👉️ [('one',), ('two',), ('three',)]
在每次迭代中,我们检查当前项是否为空元组并使用该方法删除匹配元素。 list.remove()

list.remove()方法从列表中

删除第一项,其值等于传入的参数。

remove()方法改变原始列表并返回None

在循环中从列表中删除项目时要注意的最重要的事情for是使用list.copy()方法迭代列表的副本。

如果您尝试遍历原始列表并从中删除项目,您可能会遇到难以定位的错误。