目录
Remove empty strings from a list of Strings in Python
从 Python 中的字符串列表中删除空字符串
使用列表理解从字符串列表中删除空字符串。
列表理解将返回一个不包含任何空字符串的新列表。
my_list = ['bobby', '', 'hadz', '', 'com', ''] new_list = [item for item in my_list if item] print(new_list) # 👉️ ['bobby', 'hadz', 'com']
该示例使用
列表理解从列表中删除空字符串。
在每次迭代中,我们检查当前项是否为真并返回结果。
my_list = ['bobby', '', 'hadz', '', 'com', ''] new_list = [item for item in my_list if item] print(new_list) # 👉️ ['bobby', 'hadz', 'com']
空字符串是虚假值,因此它们会被过滤掉。
列表理解创建一个新列表,它不会改变原始列表。
通过重新分配从字符串列表中删除空字符串
如果要从原始列表中删除空字符串,请使用列表切片。
my_list = ['bobby', '', 'hadz', '', 'com', ''] my_list[:] = [item for item in my_list if item] print(my_list) # 👉️ ['bobby', 'hadz', 'com']
我们使用my_list[:]
语法来获取代表整个列表的切片,因此我们可以直接分配给变量。
my_list[:]
代表整个列表,所以当我们在左侧使用它时,我们正在分配给整个列表。这种方法改变了原始列表的内容。
或者,您可以使用该filter()
功能。
使用 filter() 从字符串列表中删除空字符串
这是一个三步过程:
- 使用该
filter()
函数过滤掉空字符串。 - 使用该类
list()
将filter
对象转换为列表。 - 新列表将不包含任何空字符串。
my_list = ['bobby', '', 'hadz', '', 'com', ''] new_list = list(filter(None, my_list)) print(new_list) # 👉️ ['bobby', 'hadz', 'com']
我们使用该filter()
函数从列表中删除空字符串。
filter函数接受一个函数和一个可迭代对象作为参数,并从可迭代对象的元素构造一个迭代器,函数返回一个真值。
None
函数参数,则 iterable 的所有虚假元素都将被删除。空字符串是一个虚假值,因此所有空字符串都会被删除。
最后一步是使用list()类将对象转换filter
为列表。
或者,您可以使用for 循环。
使用 for 循环从字符串列表中删除空字符串
这是一个三步过程:
- 使用
for
循环迭代列表的副本。 - 在每次迭代中,检查当前项是否为空字符串。
- 使用
list.remove()
方法删除空字符串。
my_list = ['bobby', '', 'hadz', '', 'com', ''] for item in my_list.copy(): if item == '': my_list.remove(item) print(my_list) # 👉️ ['bobby', 'hadz', 'com']
我们使用该list.copy()
方法来获取列表的副本。
my_list = ['bobby', '', 'hadz', '', 'com', ''] # 👇️ ['bobby', '', 'hadz', '', 'com', ''] print(my_list.copy())
list.copy方法返回调用该方法的对象的浅表副本。
但是,我们可以遍历列表的副本并从原始列表中删除项目。
my_list = ['bobby', '', 'hadz', '', 'com', ''] for item in my_list.copy(): if item == '': my_list.remove(item) print(my_list) # 👉️ ['bobby', 'hadz', 'com']
list.remove()
list.remove ()方法从列表中删除第一项,其值等于传入的参数。
该remove()
方法改变了原始列表并
返回 None。
在循环中从列表中删除项目时要注意的最重要的事情for
是使用list.copy()
方法迭代列表的副本。
如果您尝试遍历原始列表并从中删除项目,您可能会遇到难以定位的错误。
在 Python 中删除列表中的所有空元素
您还可以使用列表理解从列表中删除所有空元素。
# ✅ Remove empty elements from a list (using list comprehension) my_list = ['a', '', [], (), None, 'b', '', 'c'] new_list = [item for item in my_list if item] print(new_list) # 👉️ ['a', 'b', 'c']
该示例使用列表理解从列表中删除虚假值。
my_list = ['a', '', [], (), None, 'b', '', 'c'] new_list = [item for item in my_list if item] print(new_list) # 👉️ ['a', 'b', 'c']
在每次迭代中,我们检查当前项是否为真并返回结果。
所有不真实的值都被认为是虚假的。Python 中的虚假值是:
- 定义为 falsy 的常量:
None
和False
. 0
任何数字类型的(零)- 空序列和集合:(
""
空字符串),()
(空元组),[]
(空列表),{}
(空字典),set()
(空集),range(0)
(空范围)。
None
, , 空字符串,空列表,空元组等。 False
列表理解创建一个新列表,它不会改变原始列表。
从重新分配的列表中删除所有空元素
如果要从原始列表中删除空元素,请使用列表切片。
my_list = ['a', '', [], (), None, 'b', '', 'c'] my_list[:] = [item for item in my_list if item] print(my_list) # 👉️ ['a', 'b', 'c']
我们使用my_list[:]
语法来获取代表整个列表的切片,因此我们可以直接分配给变量。
my_list[:]
代表整个列表,所以当我们在左侧使用它时,我们正在分配给整个列表。这种方法改变了原始列表的内容。
使用 filter() 从列表中删除所有空元素
或者,您可以使用该filter()
功能。
my_list = ['a', '', [], (), None, 'b', '', 'c'] new_list = list(filter(None, my_list)) print(new_list) # 👉️ ['a', 'b', 'c']
我们使用该filter()
函数从列表中删除空元素。
filter函数接受一个函数和一个可迭代对象作为参数,并从可迭代对象的元素构造一个迭代器,函数返回一个真值。
None
函数参数,则 iterable 的所有虚假元素都将被删除。最后一步是使用list()
类将filter
对象转换为列表。
使用 for 循环从列表中删除所有空元素
或者,您可以使用for
循环。
my_list = ['a', '', [], (), None, 'b', '', 'c'] for item in my_list.copy(): if not item: my_list.remove(item) print(my_list) # 👉️ ['a', 'b', 'c']
list.remove()
list.remove ()方法从列表中删除第一项,其值等于传入的参数。
该remove()
方法改变原始列表并返回None
。
在循环中从列表中删除项目时要注意的最重要的事情for
是使用list.copy()
方法迭代列表的副本。
如果您尝试遍历原始列表并从中删除项目,您可能会遇到难以定位的错误。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: