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']?
答案 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 '是两项 - 因此您分别获得b
和b
:
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']
>>>