从 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() 从元组列表中删除空元组
从元组列表中删除空元组:
- 使用
filter()
函数过滤掉空元组。 - 使用
list()
该类将filter
对象转换为列表。 - 新列表将不包含任何空元组。
主程序
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 循环从元组列表中删除空元组#
从元组列表中删除空元组:
- 使用
for
循环迭代列表的副本。 - 在每次迭代中,检查当前项是否为空元组。
- 使用
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()
方法迭代列表的副本。
如果您尝试遍历原始列表并从中删除项目,您可能会遇到难以定位的错误。