删除str列表中的空格

时间:2013-12-01 15:34:36

标签: python python-3.x

a = ['bb', '', '', '', 'cc']

我想在列表a中删除''并返回以下列表:

a = ['bb', 'cc'] 

到目前为止,我有这段代码:

new_a = []
for item in a:
    if item != '':
    new_a.extend(item)

它给了我相同的输出:

new_a = ['b', 'b', 'c', 'c']

但我想:

new_a = ['bb', 'cc']

如何在不使用任何其他模块的情况下修改现有代码以获取new_a = ['bb','cc']?

2 个答案:

答案 0 :(得分:4)

使用list-comp:

new_a = [el for el in a if el]

a获取每个元素,如果它评估为“真实”...如果你想明确地只包含非空字符串,那么你可以使用:

new_a = [el for el in a if el != '']

或者,更改现有代码以使用append(将新的单个元素添加到列表的末尾)而不是extend(这会将可迭代的项添加到最后 - 'bb '是两项 - 因此您分别获得bb

new_a = []
for item in a:
    if item != '':
        new_a.append(item)

答案 1 :(得分:2)

解决问题的另一个选项''是一个长度为零的字符串对象,因此您可以使用列表推导过滤器来仅获取带有len>的字符串。 0

>>> a = ['bb', '', '', '', 'cc']
>>> filter(lambda x: len(x) > 0, a)
['bb', 'cc']
>>>

OR

>>> filter(lambda x: x.strip(), a)
['bb', 'cc']
>>>